Makefile revision 0e5731ab59b4ecead38375f26eeea698f00b19fd
f743002678eb67b99bbc29fee116b65d9530fec0wrowe# $Revision$
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg## @file
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf# VirtualBox Guest Additions Module Makefile.
ca8584db70d0ff4d85cbfd912573688c41be27cfjailletc#
ca8584db70d0ff4d85cbfd912573688c41be27cfjailletc
ca8584db70d0ff4d85cbfd912573688c41be27cfjailletc#
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf# Copyright (C) 2006-2009 Sun Microsystems, Inc.
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf#
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf# This file is part of VirtualBox Open Source Edition (OSE), as
7f40ab64e74b7d1057b5ee6abc349e32e74b1b4cjim# available from http://www.virtualbox.org. This file is free software;
7f40ab64e74b7d1057b5ee6abc349e32e74b1b4cjim# you can redistribute it and/or modify it under the terms of the GNU
7f40ab64e74b7d1057b5ee6abc349e32e74b1b4cjim# General Public License (GPL) as published by the Free Software
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf# Foundation, in version 2 as it comes in the "COPYING" file of the
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
132ee6ac1c26d6e8953836316ba50734eefab47bsf#
132ee6ac1c26d6e8953836316ba50734eefab47bsf# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
132ee6ac1c26d6e8953836316ba50734eefab47bsf# Clara, CA 95054 USA or visit http://www.sun.com if you need
132ee6ac1c26d6e8953836316ba50734eefab47bsf# additional information or have any questions.
497e47ed2aaf97b229bd29a8bdd15f5927dc50e6sf#
497e47ed2aaf97b229bd29a8bdd15f5927dc50e6sf
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf#
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf# First, figure out which architecture we're targeting and the build type.
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf# (We have to support basic cross building (ARCH=i386|x86_64).)
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf# While at it, warn about BUILD_* vars found to help with user problems.
4f517d09c93a552f177f49ff97e93aa44eb127ebcovener#
4f517d09c93a552f177f49ff97e93aa44eb127ebcovenerifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),)
4f517d09c93a552f177f49ff97e93aa44eb127ebcovener BUILD_TARGET_ARCH_DEF := amd64
4f517d09c93a552f177f49ff97e93aa44eb127ebcovenerelse
6736c640e65e06990ef33af71ee81fac4df4ff5fjim BUILD_TARGET_ARCH_DEF := x86
20eead0b01d51fce0cc17d04b8f98ec38eac68aejimendif
20eead0b01d51fce0cc17d04b8f98ec38eac68aejimifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),)
20eead0b01d51fce0cc17d04b8f98ec38eac68aejim $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.)
cc45ee60ddfb8380b3703455098475eb72625ca8jim BUILD_TARGET_ARCH :=
20eead0b01d51fce0cc17d04b8f98ec38eac68aejimendif
cc45ee60ddfb8380b3703455098475eb72625ca8jimifeq ($(BUILD_TARGET_ARCH),)
cc45ee60ddfb8380b3703455098475eb72625ca8jim ifeq ($(ARCH),x86_64)
46e5dfe0899face9346d6711e4f2ba873d526991sf BUILD_TARGET_ARCH := amd64
46e5dfe0899face9346d6711e4f2ba873d526991sf else
46e5dfe0899face9346d6711e4f2ba873d526991sf ifeq ($(ARCH),i386)
aee831691bb9ecd96dea63d35bc8bdd21c0f0b1fsf BUILD_TARGET_ARCH := x86
aee831691bb9ecd96dea63d35bc8bdd21c0f0b1fsf else
aee831691bb9ecd96dea63d35bc8bdd21c0f0b1fsf BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF)
aee831691bb9ecd96dea63d35bc8bdd21c0f0b1fsf endif
79ccc75d7de4e14e5add1fa73aaabda0f5d33fe6trawick endif
79ccc75d7de4e14e5add1fa73aaabda0f5d33fe6trawickelse
79ccc75d7de4e14e5add1fa73aaabda0f5d33fe6trawick ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF))
fc1459657a1fde206a847f9028930725d715f8b4trawick $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).)
fc1459657a1fde206a847f9028930725d715f8b4trawick endif
fc1459657a1fde206a847f9028930725d715f8b4trawickendif
e758971371df73b097609b2fd62bc14ad935e096trawick
e758971371df73b097609b2fd62bc14ad935e096trawickifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),)
e758971371df73b097609b2fd62bc14ad935e096trawick $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.)
1dd5136d67e0164e4afd723a471b86a1b7eb1874sf BUILD_TYPE :=
1dd5136d67e0164e4afd723a471b86a1b7eb1874sfendif
1dd5136d67e0164e4afd723a471b86a1b7eb1874sfifeq ($(BUILD_TYPE),)
1dd5136d67e0164e4afd723a471b86a1b7eb1874sf BUILD_TYPE := release
e39eb98e3ad3fbf5c34b2fa1d16861f95143e22esfelse
e39eb98e3ad3fbf5c34b2fa1d16861f95143e22esf ifneq ($(BUILD_TYPE),release)
e39eb98e3ad3fbf5c34b2fa1d16861f95143e22esf $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).)
d6fc66efa723db8b3ee5e9fd32579bed884e4e58sf endif
d6fc66efa723db8b3ee5e9fd32579bed884e4e58sfendif
d6fc66efa723db8b3ee5e9fd32579bed884e4e58sf
d6fc66efa723db8b3ee5e9fd32579bed884e4e58sf
f00cb80197f824c3ff00dd4fdff3b2c267a519d1kbrand# override is required by the Debian guys
f00cb80197f824c3ff00dd4fdff3b2c267a519d1kbrandoverride MODULE = vboxguest
f00cb80197f824c3ff00dd4fdff3b2c267a519d1kbrandOBJS = \
f00cb80197f824c3ff00dd4fdff3b2c267a519d1kbrand VBoxGuest-linux.o \
85eacfc96a04547ef25aabbc06440039715084c2jorton VBoxGuest.o \
85eacfc96a04547ef25aabbc06440039715084c2jorton GenericRequest.o \
85eacfc96a04547ef25aabbc06440039715084c2jorton HGCMInternal.o \
1d8d7e58e1d31d7b6fb7a518e09649a4dbb315e9trawick Init.o \
1d8d7e58e1d31d7b6fb7a518e09649a4dbb315e9trawick PhysHeap.o \
1d8d7e58e1d31d7b6fb7a518e09649a4dbb315e9trawick SysHlp.o \
f34da68471f256dca0ff770257c3e1f982f74cf1trawick VMMDev.o \
f34da68471f256dca0ff770257c3e1f982f74cf1trawick r0drv/alloc-r0drv.o \
f34da68471f256dca0ff770257c3e1f982f74cf1trawick r0drv/initterm-r0drv.o \
8b645fd3c950da73513b546366c7cfa7476c5c06jim r0drv/memobj-r0drv.o \
8b645fd3c950da73513b546366c7cfa7476c5c06jim r0drv/mpnotification-r0drv.o \
8b645fd3c950da73513b546366c7cfa7476c5c06jim r0drv/powernotification-r0drv.o \
8b645fd3c950da73513b546366c7cfa7476c5c06jim r0drv/linux/alloc-r0drv-linux.o \
193f0bb6057d67593ed652fbf58f043def51c642jim r0drv/linux/assert-r0drv-linux.o \
193f0bb6057d67593ed652fbf58f043def51c642jim r0drv/linux/initterm-r0drv-linux.o \
193f0bb6057d67593ed652fbf58f043def51c642jim r0drv/linux/memobj-r0drv-linux.o \
68ba377fc3b124baa759662077c48077ebadb186minfrin r0drv/linux/memuserkernel-r0drv-linux.o \
68ba377fc3b124baa759662077c48077ebadb186minfrin r0drv/linux/mp-r0drv-linux.o \
68ba377fc3b124baa759662077c48077ebadb186minfrin r0drv/linux/mpnotification-r0drv-linux.o \
68ba377fc3b124baa759662077c48077ebadb186minfrin r0drv/linux/process-r0drv-linux.o \
00566fb187849626180724394a21ddcd28419fb2minfrin r0drv/linux/semevent-r0drv-linux.o \
00566fb187849626180724394a21ddcd28419fb2minfrin r0drv/linux/semeventmulti-r0drv-linux.o \
00566fb187849626180724394a21ddcd28419fb2minfrin r0drv/linux/semfastmutex-r0drv-linux.o \
00566fb187849626180724394a21ddcd28419fb2minfrin r0drv/linux/spinlock-r0drv-linux.o \
d776b0a2d2889ce1d13494873368f34327a2e1bbtrawick r0drv/linux/thread-r0drv-linux.o \
d776b0a2d2889ce1d13494873368f34327a2e1bbtrawick r0drv/linux/time-r0drv-linux.o \
f4ca9f6f002fece336168a16355434ca966f96a9trawick r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \
57db302f0875a6c93a79333b8941cea4c1827272jim r0drv/generic/semspinmutex-r0drv-generic.o \
57db302f0875a6c93a79333b8941cea4c1827272jim common/err/RTErrConvertFromErrno.o \
57db302f0875a6c93a79333b8941cea4c1827272jim common/err/RTErrConvertToErrno.o \
57db302f0875a6c93a79333b8941cea4c1827272jim common/log/log.o \
92b1631880b0bf43fe8b2663a03c8571eb04e433jim common/log/logellipsis.o \
92b1631880b0bf43fe8b2663a03c8571eb04e433jim common/log/logrel.o \
92b1631880b0bf43fe8b2663a03c8571eb04e433jim common/log/logrelellipsis.o \
89225e8e84d38b07a8335922497997e83d872e75jim common/log/logcom.o \
89225e8e84d38b07a8335922497997e83d872e75jim common/log/logformat.o \
89225e8e84d38b07a8335922497997e83d872e75jim common/misc/RTAssertMsg1Weak.o \
78f94f1d06c4e6828ce04d618221e0fcecb57849humbedooh common/misc/RTAssertMsg2.o \
78f94f1d06c4e6828ce04d618221e0fcecb57849humbedooh common/misc/RTAssertMsg2Add.o \
78f94f1d06c4e6828ce04d618221e0fcecb57849humbedooh common/misc/RTAssertMsg2AddWeak.o \
f5e28c78424d2f71c61ba457009f100bba38bc68chrisd common/misc/RTAssertMsg2AddWeakV.o \
f5e28c78424d2f71c61ba457009f100bba38bc68chrisd common/misc/RTAssertMsg2Weak.o \
f5e28c78424d2f71c61ba457009f100bba38bc68chrisd common/misc/RTAssertMsg2WeakV.o \
f4a715f904b014060ea6237fe29481ed21f5c7d0jorton common/misc/assert.o \
f4a715f904b014060ea6237fe29481ed21f5c7d0jorton common/string/strformat.o \
f4a715f904b014060ea6237fe29481ed21f5c7d0jorton common/string/strformatrt.o \
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick common/string/strformattype.o \
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick common/string/strprintf.o \
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick common/string/strtonum.o \
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick generic/RTAssertShouldPanic-generic.o \
70caa242e6b90e0d6f0fabb56b8c5c2fb51717b3jorton generic/RTLogWriteStdErr-stub-generic.o \
985a4368b93c3e9171a57897ad9454c8dbf4cdf6jorton generic/RTLogWriteStdOut-stub-generic.o \
70caa242e6b90e0d6f0fabb56b8c5c2fb51717b3jorton VBox/log-vbox.o \
70caa242e6b90e0d6f0fabb56b8c5c2fb51717b3jorton VBox/logbackdoor.o \
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedooh VBox/strformat-vbox.o
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedoohifeq ($(BUILD_TARGET_ARCH),x86)
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedoohOBJS += \
4be250c774bdac977eef29a02183ca78de29fb41rjung common/math/gcc/divdi3.o \
4be250c774bdac977eef29a02183ca78de29fb41rjung common/math/gcc/moddi3.o \
4be250c774bdac977eef29a02183ca78de29fb41rjung common/math/gcc/udivdi3.o \
12b5dc9afa1844df5ac8acab98fb538432a2fa1crjung common/math/gcc/umoddi3.o \
12b5dc9afa1844df5ac8acab98fb538432a2fa1crjung common/math/gcc/qdivrem.o
12b5dc9afa1844df5ac8acab98fb538432a2fa1crjungendif
12b5dc9afa1844df5ac8acab98fb538432a2fa1crjungifeq ($(BUILD_TARGET_ARCH),amd64)
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedoohOBJS += common/alloc/heapsimple.o
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedoohendif
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedooh
10961a2f60207cb873d889bb28b1f0ef707a4311humbedoohifneq ($(MAKECMDGOALS),clean)
10961a2f60207cb873d889bb28b1f0ef707a4311humbedooh
10961a2f60207cb873d889bb28b1f0ef707a4311humbedoohifeq ($(KERNELRELEASE),)
0448378b899e8df0c060360f17c0af692adf17bchumbedooh
0448378b899e8df0c060360f17c0af692adf17bchumbedooh #
0448378b899e8df0c060360f17c0af692adf17bchumbedooh # building from this directory
60a765cccbd3f3b5997b65b0034220c79f78369etrawick #
60a765cccbd3f3b5997b65b0034220c79f78369etrawick
60a765cccbd3f3b5997b65b0034220c79f78369etrawick # kernel base directory
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh ifndef KERN_DIR
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh KERN_DIR := /lib/modules/$(shell uname -r)/build
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh KERN_DIR := /usr/src/linux
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedooh ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
91814c869ca39ce45dfe147307d2a831cac6ecbehumbedooh $(error Error: unable to find the sources of your current Linux kernel. \
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedooh Specify KERN_DIR=<directory> and run Make again)
79c5787b92ac5f0e1cc82393816c77a006399316trawick endif
79c5787b92ac5f0e1cc82393816c77a006399316trawick $(warning Warning: using /usr/src/linux as the source directory of your \
79c5787b92ac5f0e1cc82393816c77a006399316trawick Linux kernel. If this is not correct, specify \
79c5787b92ac5f0e1cc82393816c77a006399316trawick KERN_DIR=<directory> and run Make again.)
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawick endif
79c5787b92ac5f0e1cc82393816c77a006399316trawick else
79c5787b92ac5f0e1cc82393816c77a006399316trawick ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
79c5787b92ac5f0e1cc82393816c77a006399316trawick $(error Error: KERN_DIR does not point to a directory)
79c5787b92ac5f0e1cc82393816c77a006399316trawick endif
79c5787b92ac5f0e1cc82393816c77a006399316trawick endif
12b987b969f03ef98d9175a53d849ab62f5684fecovener
12b987b969f03ef98d9175a53d849ab62f5684fecovener # includes
099c357f282d4aebf2b32264f7dce6ffc0497c37sf ifndef KERN_INCL
099c357f282d4aebf2b32264f7dce6ffc0497c37sf KERN_INCL = $(KERN_DIR)/include
099c357f282d4aebf2b32264f7dce6ffc0497c37sf endif
099c357f282d4aebf2b32264f7dce6ffc0497c37sf ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes)
50f8c80eb4d3989ebf3f1341aeef4d2d302af162sf $(error Error: unable to find the include directory for your current Linux \
50f8c80eb4d3989ebf3f1341aeef4d2d302af162sf kernel. Specify KERN_INCL=<directory> and run Make again)
4bb0a88a01fb7b494bb02a8b881b5eab0308bda6sf endif
50f8c80eb4d3989ebf3f1341aeef4d2d302af162sf
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton # module install dir, only for current kernel
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),)
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton ifndef MODULE_DIR
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton MODULE_DIR_TST := /lib/modules/$(shell uname -r)
536e48c08d674acac5d44929318f2ad928edc361jorton ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes)
536e48c08d674acac5d44929318f2ad928edc361jorton MODULE_DIR := $(MODULE_DIR_TST)/misc
e81785da447b469da66f218b3f0244aab507958djorton else
e81785da447b469da66f218b3f0244aab507958djorton $(error Unable to find the folder to install the additions driver to)
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton endif
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton endif # MODULE_DIR unspecified
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton endif
459eaf0826f995b73a0dc066f59ea10d2824e72dsf
459eaf0826f995b73a0dc066f59ea10d2824e72dsf # guess kernel version (24 or 26)
459eaf0826f995b73a0dc066f59ea10d2824e72dsf ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes)
459eaf0826f995b73a0dc066f59ea10d2824e72dsf KERN_VERSION := 24
53e9b27aba029b18be814df40bcf6f0428771d1efuankg else
53e9b27aba029b18be814df40bcf6f0428771d1efuankg KERN_VERSION := 26
53e9b27aba029b18be814df40bcf6f0428771d1efuankg endif
53e9b27aba029b18be814df40bcf6f0428771d1efuankg
53e9b27aba029b18be814df40bcf6f0428771d1efuankgelse # neq($(KERNELRELEASE),)
6bb524f1895f30265a1431afc460977d391cb36bsf
6bb524f1895f30265a1431afc460977d391cb36bsf #
ca61ccd0c306c2c72df153688ba1b49f3eceed80sf # building from kbuild (make -C <kernel_directory> M=`pwd`)
6bb524f1895f30265a1431afc460977d391cb36bsf #
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin # guess kernel version (24 or 26)
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes)
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin KERN_VERSION := 24
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin else
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin KERN_VERSION := 26
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin endif
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungendif # neq($(KERNELRELEASE),)
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung# debug - show guesses.
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungifdef DEBUG
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung$(warning dbg: KERN_DIR = $(KERN_DIR))
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung$(warning dbg: KERN_INCL = $(KERN_INCL))
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung$(warning dbg: MODULE_DIR = $(MODULE_DIR))
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung$(warning dbg: KERN_VERSION = $(KERN_VERSION))
6249dfa569d3b4f1f539665b979a80c6e335d93etrawickendif
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick
0827cb14e550f6f65018431c22c2c913631c8f25kbrandKBUILD_VERBOSE ?= 1
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick
ae600ca541efc686b34f8b1f21bd3d0741d37674covener#
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick# Compiler options
cfa64348224b66dd1c9979b809406c4d15b1c137fielding#
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajimifndef INCL
cfa64348224b66dd1c9979b809406c4d15b1c137fielding INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL))
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim ifndef KBUILD_EXTMOD
cfa64348224b66dd1c9979b809406c4d15b1c137fielding KBUILD_EXTMOD := $(shell pwd)
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim endif
cfa64348224b66dd1c9979b809406c4d15b1c137fielding INCL += $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim export INCL
cfa64348224b66dd1c9979b809406c4d15b1c137fieldingendif
KFLAGS := -D__KERNEL__ -DMODULE \
-DVBOX -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_GUEST -DIN_GUEST_R0 \
-DIN_MODULE -DRT_WITH_VBOX -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM
ifeq ($(BUILD_TARGET_ARCH),amd64)
KFLAGS += -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS
else
KFLAGS += -DRT_ARCH_X86
endif
ifeq ($(BUILD_TYPE),debug)
KFLAGS += -DDEBUG
endif
ifeq ($(KERN_VERSION), 24)
#
# 2.4
#
ifeq ($(BUILD_TARGET_ARCH),amd64)
KFLAGS += -mcmodel=kernel
endif
CFLAGS := -O2 -DVBOX_LINUX_2_4 -DEXPORT_SYMTAB $(INCL) $(KFLAGS) $(KDEBUG)
MODULE_EXT := o
# 2.4 Module linking
$(MODULE).o: $(OBJS)
$(LD) -o $@ -r $(OBJS)
.PHONY: $(MODULE)
all: $(MODULE)
$(MODULE): $(MODULE).o
else
#
# 2.6 and later
#
MODULE_EXT := ko
$(MODULE)-y := $(OBJS)
# build defs
EXTRA_CFLAGS += $(INCL) $(KFLAGS) $(KDEBUG)
all: $(MODULE)
obj-m += $(MODULE).o
$(MODULE):
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules
endif
install: $(MODULE)
@mkdir -p $(MODULE_DIR); \
install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \
PATH="$(PATH):/bin:/sbin" depmod -a;
endif # eq($(MAKECMDGOALS),clean)
clean:
for f in . linux r0drv r0drv/linux r0drv/generic VBox common/err common/string common/log generic common/math/gcc; \
do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done
rm -rf .vboxguest* .tmp_ver* vboxguest.* Module.symvers Modules.symvers modules.order