Makefile revision 623f56b78e24ab3154f4a00c7bc8bb43579878c5
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# $Revision$
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater## @file
7a2a1b8b14fc804ac80612d7b98064095e445be5Automatic Updater# Makefile for the VirtualBox Linux Host Driver.
7a42357217528037bdfedcb17eeebfe96ae4266aAutomatic Updater#
1167fc7904c5f0a472f8df207ac46dd52c7f1ec8Automatic Updater
0c39b3ed9409ecb277d5e32fa763a4e4d6598df8Automatic Updater#
46da3117812814a29432a8d9a9ccf8acdbfdadceAutomatic Updater#
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User# Copyright (C) 2006-2007 Sun Microsystems, Inc.
fe84edc17e0d582cf7b4270f8df9d4742a107b1cAutomatic Updater#
79b273c187a4aa1016a62181983dfdd0521681aeMark Andrews# This file is part of VirtualBox Open Source Edition (OSE), as
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User# available from http://www.virtualbox.org. This file is free software;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# you can redistribute it and/or modify it under the terms of the GNU
b253dcf9668f95e141bce9556dc88e30d3305a1dTinderbox User# General Public License (GPL) as published by the Free Software
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# Foundation, in version 2 as it comes in the "COPYING" file of the
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1ac49378a458420bc685293d12e567d7222d17b6Tinderbox User# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
bbde8dc56605130058a1540609264fa109da3b63Automatic Updater#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# The contents of this file may alternatively be used under the terms
e130ab53e992670e2a2ecf043976ac09f21358d1Automatic Updater# of the Common Development and Distribution License Version 1.0
3cc98b8ecedcbc8465f1cf2740b966b315662430Automatic Updater# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# VirtualBox OSE distribution, in which case the provisions of the
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# CDDL are applicable instead of those of the GPL.
a01aa536188bb3535dfc1107a623e6355a8e6b7cMark Andrews#
89623368b8f662d458d9964b923050f33c5f75b0Tinderbox User# You may elect to license modified versions of this file under the
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# terms and conditions of either the GPL or the CDDL or both.
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater#
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater# Clara, CA 95054 USA or visit http://www.sun.com if you need
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson# additional information or have any questions.
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater#
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson#
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater# First, figure out which architecture we're targeting and the build type.
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# (We have to support basic cross building (ARCH=i386|x86_64).)
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User# While at it, warn about BUILD_* vars found to help with user problems.
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt#
e130ab53e992670e2a2ecf043976ac09f21358d1Automatic Updaterifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),)
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater BUILD_TARGET_ARCH_DEF := amd64
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Huntelse
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater BUILD_TARGET_ARCH_DEF := x86
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterendif
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),)
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.)
e130ab53e992670e2a2ecf043976ac09f21358d1Automatic Updater BUILD_TARGET_ARCH :=
2d2dc37599979c83495510f8af8d1756753aa2c5Automatic Updaterendif
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Huntifeq ($(BUILD_TARGET_ARCH),)
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User ifeq ($(ARCH),x86_64)
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater BUILD_TARGET_ARCH := amd64
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater else
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater ifeq ($(ARCH),i386)
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater BUILD_TARGET_ARCH := x86
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater else
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF)
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater endif
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater endif
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterelse
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF))
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).)
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews endif
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox Userendif
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),)
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.)
8e9f3b69914ee02a80b87c97b1f8093edb3e9ae0Automatic Updater BUILD_TYPE :=
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsendif
930f6069e5aa157cf6987cdafd412f5757a5a558Automatic Updaterifeq ($(BUILD_TYPE),)
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews BUILD_TYPE := release
930f6069e5aa157cf6987cdafd412f5757a5a558Automatic Updaterelse
80faf1588895fd26490f82f95a7a1b771df1c324Automatic Updater ifneq ($(BUILD_TYPE),release)
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).)
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater endif
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsendif
114f7780384371121918624ae2c80ecfce545683Tinderbox User
693c4232dfdffaff672197d4b9fea944c64cf80aAutomatic Updater# override is required by the Debian guys
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsoverride MODULE = vboxdrv
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic UpdaterOBJS = \
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson linux/SUPDrv-linux.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater SUPDrv.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater SUPDrvAgnostic.o \
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews r0drv/alloc-r0drv.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater r0drv/initterm-r0drv.o \
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson r0drv/memobj-r0drv.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater r0drv/mpnotification-r0drv.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater r0drv/powernotification-r0drv.o \
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson r0drv/linux/assert-r0drv-linux.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater r0drv/linux/alloc-r0drv-linux.o \
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User r0drv/linux/initterm-r0drv-linux.o \
b871c7156eb037d41f53828c6fcb9cc876128962Mark Andrews r0drv/linux/memobj-r0drv-linux.o \
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews r0drv/linux/memuserkernel-r0drv-linux.o \
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User r0drv/linux/mp-r0drv-linux.o \
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User r0drv/linux/mpnotification-r0drv-linux.o \
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews r0drv/linux/process-r0drv-linux.o \
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont r0drv/linux/semevent-r0drv-linux.o \
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User r0drv/linux/semeventmulti-r0drv-linux.o \
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User r0drv/linux/semfastmutex-r0drv-linux.o \
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont r0drv/linux/spinlock-r0drv-linux.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews r0drv/linux/thread-r0drv-linux.o \
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User r0drv/linux/thread2-r0drv-linux.o \
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User r0drv/linux/time-r0drv-linux.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews r0drv/linux/timer-r0drv-linux.o \
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews r0drv/generic/semspinmutex-r0drv-generic.o \
24bf1e02f03577db0feb50b80238c4150c96d05dAutomatic Updater common/err/RTErrConvertFromErrno.o \
24bf1e02f03577db0feb50b80238c4150c96d05dAutomatic Updater common/err/RTErrConvertToErrno.o \
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews common/log/log.o \
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews common/log/logellipsis.o \
7500521cecdff3c00e594ec41d3a17292332ffbcTinderbox User common/log/logrel.o \
a308b69ac66fadf66863484f301314d6e6a3f1d2Automatic Updater common/log/logrelellipsis.o \
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews common/log/logcom.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews common/log/logformat.o \
a01aa536188bb3535dfc1107a623e6355a8e6b7cMark Andrews common/misc/handletable.o \
89623368b8f662d458d9964b923050f33c5f75b0Tinderbox User common/misc/handletablectx.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews common/string/strformat.o \
b871c7156eb037d41f53828c6fcb9cc876128962Mark Andrews common/string/strformatrt.o \
b871c7156eb037d41f53828c6fcb9cc876128962Mark Andrews common/string/strformattype.o \
b871c7156eb037d41f53828c6fcb9cc876128962Mark Andrews common/string/strprintf.o \
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews common/string/strtonum.o \
b871c7156eb037d41f53828c6fcb9cc876128962Mark Andrews r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \
b871c7156eb037d41f53828c6fcb9cc876128962Mark Andrews generic/RTAssertShouldPanic-generic.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater generic/RTLogWriteStdErr-stub-generic.o \
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater generic/RTLogWriteStdOut-stub-generic.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater generic/RTLogWriteUser-generic.o \
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater generic/uuid-generic.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater VBox/log-vbox.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater VBox/strformat-vbox.o
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updaterifeq ($(BUILD_TARGET_ARCH),x86)
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic UpdaterOBJS += math/gcc/divdi3.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater math/gcc/moddi3.o \
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson math/gcc/qdivrem.o \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater math/gcc/udivdi3.o \
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews math/gcc/divdi3.o \
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson math/gcc/umoddi3.o
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic Updaterendif
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic Updaterifeq ($(BUILD_TARGET_ARCH),amd64)
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic UpdaterOBJS += alloc/heapsimple.o
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updaterendif
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updaterifneq ($(MAKECMDGOALS),clean)
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonifeq ($(KERNELRELEASE),)
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User #
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User # building from this directory
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User #
1368e4b34cef64604c874fcc40201c78e548714cTinderbox User
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User # kernel base directory
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User ifndef KERN_DIR
f132a836c4e386b1af045dd8fe7106ae61b90bffAutomatic Updater # build for the current kernel, version check
8f2c45a35dd8c40bcc9caba8f7d40ce64fc27bcdAutomatic Updater KERN_DIR := /lib/modules/$(shell uname -r)/build
c6a0f4ae1d7183a16ffb196b86b647f870694796Automatic Updater ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
8f2c45a35dd8c40bcc9caba8f7d40ce64fc27bcdAutomatic Updater KERN_DIR := /usr/src/linux
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User $(error Error: unable to find the sources of your current Linux kernel. \
269519eeb959d905ed125f96426e01d725c3b597Tinderbox User Specify KERN_DIR=<directory> and run Make again)
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater endif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $(warning Warning: using /usr/src/linux as the source directory of your \
8f2c45a35dd8c40bcc9caba8f7d40ce64fc27bcdAutomatic Updater Linux kernel. If this is not correct, specify \
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater KERN_DIR=<directory> and run Make again.)
8f2c45a35dd8c40bcc9caba8f7d40ce64fc27bcdAutomatic Updater endif
4e0e18467f8ec5a9e5d0c538ce46bf07409ecf9bTinderbox User # check if versions match -- works only for later 2.6 kernels
e85565067cf73f8cc21ee29b11761659f1d47ee9Automatic Updater VBOX_KERN_VER := $(shell $(MAKE) -sC $(KERN_DIR) --no-print-directory kernelrelease 2> /dev/null || true)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater ifneq ($(VBOX_KERN_VER),)
bc0a53583d92309bebcf93c408e2f3247ebd3d3cAutomatic Updater ifneq ($(VBOX_KERN_VER),$(shell uname -r))
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $(error Error: /usr/src/linux (version $(VBOX_KERN_VER)) does not match \
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater the current kernel (version $(shell uname -r)))
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater endif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater endif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater else
7f79131f9a8e804b93c57f3c679065cce878b726Automatic Updater # build for a dedicated kernel, no version check
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $(error Error: KERN_DIR does not point to a directory)
3f616e6f846be57b1717c6beaba0f74de9d5a7c6Automatic Updater endif
8f2c45a35dd8c40bcc9caba8f7d40ce64fc27bcdAutomatic Updater endif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
19b3dc94bce93fa76bd7e066f9298630dbc9dcb4Automatic Updater # includes
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater ifndef KERN_INCL
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater KERN_INCL = $(KERN_DIR)/include
7f94d9a8162c9a96b56e66176702b66e79d8e1a2Automatic Updater endif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $(error Error: unable to find the include directory for your current Linux \
5ecad47f69b3fd945472ab2900a9ff826a7ce2f6Automatic Updater kernel. Specify KERN_INCL=<directory> and run Make again)
e130ab53e992670e2a2ecf043976ac09f21358d1Automatic Updater endif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
71bd43eebd9d6e42dbcae62b730f5b6508d5acd8Automatic Updater # module install dir, only for current kernel
82447d835d3ff5c658749b4e9b4f66166407b3eaAutomatic Updater ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),)
7262eb86f2b465822206122921e2f357218f0cfdAutomatic Updater ifndef MODULE_DIR
96ea71632887c58a9d00f47eb318bf76b35903c3Mark Andrews MODULE_DIR_TST := /lib/modules/$(shell uname -r)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes)
9cd5eb6fe0f26d65724b99216cb31dcdd12e4afdAutomatic Updater MODULE_DIR := $(MODULE_DIR_TST)/misc
bbb069be941f649228760edcc241122933c066d2Automatic Updater else
9cd5eb6fe0f26d65724b99216cb31dcdd12e4afdAutomatic Updater $(error Unable to find the folder to install the support driver to)
4cda4fd158d6ded5586bacea8c388445d99611eaAutomatic Updater endif
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews endif # MODULE_DIR unspecified
9cd5eb6fe0f26d65724b99216cb31dcdd12e4afdAutomatic Updater endif
80faf1588895fd26490f82f95a7a1b771df1c324Automatic Updater
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewselse # neq($(KERNELRELEASE),)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
a382ca49c874d38ad3ac8995b49f9f27128e4ca9Automatic Updater #
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews # building from kbuild (make -C <kernel_directory> M=`pwd`)
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews #
89623368b8f662d458d9964b923050f33c5f75b0Tinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsendif # neq($(KERNELRELEASE),)
cafd3a2b9974fe0a4ab95e0289746062bd958d68Automatic Updater
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# debug - show guesses.
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updaterifdef DEBUG
7a2a1b8b14fc804ac80612d7b98064095e445be5Automatic Updater$(warning dbg: KERN_DIR = $(KERN_DIR))
f132a836c4e386b1af045dd8fe7106ae61b90bffAutomatic Updater$(warning dbg: KERN_INCL = $(KERN_INCL))
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater$(warning dbg: MODULE_DIR = $(MODULE_DIR))
1368e4b34cef64604c874fcc40201c78e548714cTinderbox Userendif
f7a71eef29bcbf892270460269c79664f600cffdAutomatic Updater
3e5340279d8875d136a4dd815cccad0044aa2644Automatic UpdaterKBUILD_VERBOSE ?= 1
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User
fe84edc17e0d582cf7b4270f8df9d4742a107b1cAutomatic Updater#
cf7e98f59148b559946a7f1ca728471374f1eef3Automatic Updater# Compiler options
930f6069e5aa157cf6987cdafd412f5757a5a558Automatic Updater#
8ccd7da886e93cd490fcb6f4c4e98a6514f35820Automatic Updaterifndef INCL
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL))
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater ifndef KBUILD_EXTMOD
cf7e98f59148b559946a7f1ca728471374f1eef3Automatic Updater KBUILD_EXTMOD := $(shell pwd)
c3fd32ed29e9e419bb56583f4272a506773b1ea0Automatic Updater endif
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson INCL += $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
c3fd32ed29e9e419bb56583f4272a506773b1ea0Automatic Updater export INCL
c3fd32ed29e9e419bb56583f4272a506773b1ea0Automatic Updaterendif
a382ca49c874d38ad3ac8995b49f9f27128e4ca9Automatic UpdaterKFLAGS := -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox Userifdef VBOX_REDHAT_KABI
8f2c45a35dd8c40bcc9caba8f7d40ce64fc27bcdAutomatic Updater KFLAGS += -DVBOX_REDHAT_KABI
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox Userendif
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox Userifndef CONFIG_VBOXDRV_FIXEDMAJOR
3857cb6fcabeb79d85de4b3e3e4ab99912b701f8Mark Andrews KFLAGS += -DCONFIG_VBOXDRV_AS_MISC
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox Userendif
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox Userifeq ($(BUILD_TARGET_ARCH),amd64)
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews KFLAGS += -DRT_ARCH_AMD64
9174e44c14b1cb91a651fa1dc29470438c246ab9Automatic Updaterelse
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson KFLAGS += -DRT_ARCH_X86
e2caa7536302de34de6cc04025abcd53dc3a499aAutomatic Updaterendif
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User# must be consistent with Config.kmk!
8292deab031e7599cd7622aa7675fbe139ca6095Mark AndrewsKFLAGS += -DVBOX_WITH_64_BITS_GUESTS
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrewsifeq ($(BUILD_TYPE),debug)
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrews KFLAGS += -DDEBUG -DDEBUG_$(USER) -g
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrews # IPRT_DEBUG_SEMS indicates thread wrt sems state via the comm field.
dc11390a658e02e1a03accd4dbe14c94fa9de556Automatic Updater KFLAGS += -DIPRT_DEBUG_SEMS
08d53af7d51409036462fa80fb1bde7a8c2ac123Automatic Updaterendif
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
b109432c3a939bff66a463be86c371bd88efe3aaAutomatic Updater# 2.6 and later
7d12a6b412fe47e6d6582923fd6954ab8cd0baebAutomatic UpdaterMODULE_EXT := ko
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews$(MODULE)-y := $(OBJS)
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
3351ccbd5c1961404044f8273d54dad405f53960Mark Andrews# build defs
7d12a6b412fe47e6d6582923fd6954ab8cd0baebAutomatic UpdaterEXTRA_CFLAGS += $(INCL) $(KFLAGS) $(KDEBUG)
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrewsall: $(MODULE)
3351ccbd5c1961404044f8273d54dad405f53960Mark Andrews
7d12a6b412fe47e6d6582923fd6954ab8cd0baebAutomatic Updaterobj-m += $(MODULE).o
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrews$(MODULE):
7d12a6b412fe47e6d6582923fd6954ab8cd0baebAutomatic Updater $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrews
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updaterinstall: $(MODULE)
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater @mkdir -p $(MODULE_DIR); \
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater PATH="$(PATH):/bin:/sbin" depmod -ae; \
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater rm -f /etc/vbox/module_not_compiled
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updaterinstall_rpm: $(MODULE)
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater @mkdir -p $(MODULE_DIR); \
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater install -m 0664 $(MODULE).$(MODULE_EXT) $(MODULE_DIR)
7d12a6b412fe47e6d6582923fd6954ab8cd0baebAutomatic Updater
b253dcf9668f95e141bce9556dc88e30d3305a1dTinderbox Userendif # eq($(MAKECMDGOALS),clean)
b253dcf9668f95e141bce9556dc88e30d3305a1dTinderbox User
b253dcf9668f95e141bce9556dc88e30d3305a1dTinderbox Userclean:
b253dcf9668f95e141bce9556dc88e30d3305a1dTinderbox User for f in . linux r0drv r0drv/generic r0drv/linux VBox common/err common/string common/log generic math/gcc; \
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done
b253dcf9668f95e141bce9556dc88e30d3305a1dTinderbox User rm -rf .vboxdrv* .tmp_ver* vboxdrv.* Module.symvers Modules.symvers modules.order
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User