Makefile revision 9868c07279330f31ed91aa986bec707b7e8635a3
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User#
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater# Makefile for the VirtualBox Linux Host Driver.
c78c39caab4cf8b5daefc9c65878f7f5ed3eb7a0Tinderbox User# (For 2.6.x this file must be called 'Makefile'!)
f536382c59dd492a14667b753816d920f9981f1cTinderbox User#
ab496cc3df1648e9ad992a87c35c2c0870fdc69dTinderbox User
7c1468ed500356839a4a222517364e6ce18cb1a2Tinderbox User#
c57668a2fbbe558c1bd21652813616f2f517c469Tinderbox User#
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews# Copyright (C) 2006-2007 innotek GmbH
1f4c645185bd8fc70048e0a69eee46193a284e5cTinderbox User#
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews# This file is part of VirtualBox Open Source Edition (OSE), as
8de3f14f1c300c3e1ed99084cc03485b42c92bf1Tinderbox User# available from http://www.virtualbox.org. This file is free software;
950d203b64f512b85fcc093ee1e9e3e531a1aea3Tinderbox User# you can redistribute it and/or modify it under the terms of the GNU
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# General Public License (GPL) as published by the Free Software
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews# Foundation, in version 2 as it comes in the "COPYING" file of the
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews# The contents of this file may alternatively be used under the terms
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews# of the Common Development and Distribution License Version 1.0
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# VirtualBox OSE distribution, in which case the provisions of the
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews# CDDL are applicable instead of those of the GPL.
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# You may elect to license modified versions of this file under the
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# terms and conditions of either the GPL or the CDDL or both.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# First, figure out which architecture we're targeting and the build type.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# (We have to support basic cross building (ARCH=i386|x86_64).)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# While at it, warn about BUILD_* vars found to help with user problems.
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews BUILD_TARGET_ARCH :=
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userendif
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsifeq ($(BUILD_TARGET_ARCH),)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User ifeq ($(ARCH),x86_64)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews BUILD_TARGET_ARCH := amd64
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User else
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ifeq ($(ARCH),i386)
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User BUILD_TARGET_ARCH := x86
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews else
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),)
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User BUILD_TARGET_ARCH := amd64
0e573cdd111e060e5f6c18249b5ccacbe8abe278Tinderbox User else
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt BUILD_TARGET_ARCH := x86
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater endif
16f6050f29b6b0422cee858e609f65e474e70ef2Tinderbox User endif
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater endif
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Huntelse
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).)
0e573cdd111e060e5f6c18249b5ccacbe8abe278Tinderbox Userendif
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox Userifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),)
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.)
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater BUILD_TYPE :=
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterendif
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsifeq ($(BUILD_TYPE),)
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater BUILD_TYPE := release
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewselse
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsendif
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsMODULE = vboxdrv
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsOBJS = \
16f6050f29b6b0422cee858e609f65e474e70ef2Tinderbox User linux/SUPDrv-linux.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews SUPDRVShared.o \
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater r0drv/alloc-r0drv.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews r0drv/initterm-r0drv.o \
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews r0drv/linux/alloc-r0drv-linux.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews r0drv/linux/initterm-r0drv-linux.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews r0drv/linux/process-r0drv-linux.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews r0drv/linux/semevent-r0drv-linux.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews r0drv/linux/semeventmulti-r0drv-linux.o \
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User r0drv/linux/semfastmutex-r0drv-linux.o \
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt r0drv/linux/spinlock-r0drv-linux.o \
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt r0drv/linux/thread-r0drv-linux.o
2ae159b376dac23870d8005563c585acf85a4b5aEvan Huntifeq ($(BUILD_TARGET_ARCH),amd64)
95637507c3d47481fbf0a8a8c750a57f944f677fMark AndrewsOBJS += alloc/heapsimple.o
2ae159b376dac23870d8005563c585acf85a4b5aEvan Huntendif
2ae159b376dac23870d8005563c585acf85a4b5aEvan Huntifeq ($(BUILD_TYPE),debug)
2ae159b376dac23870d8005563c585acf85a4b5aEvan HuntOBJS += \
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt math/gcc/divdi3.o \
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt math/gcc/moddi3.o \
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt math/gcc/udivdi3.o \
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt math/gcc/umoddi3.o \
7cc0a5d21ef046bfd630c4769943d896a7d7472cTinderbox User math/gcc/qdivrem.o \
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews common/log/log.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews common/log/logcom.o \
950d203b64f512b85fcc093ee1e9e3e531a1aea3Tinderbox User common/log/logformat.o \
27739dd25026283c24645c8a1044b95ef9eb5ac6Tinderbox User common/string/strformat.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews common/string/strformatrt.o \
18920d790825d96ca3943aa2dcb6eb80dc611c5fTinderbox User common/string/strprintf.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews common/string/strtonum.o \
7a6494cfb6cc7d3f67af07359561e05e6bb8c0edTinderbox User r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \
0e573cdd111e060e5f6c18249b5ccacbe8abe278Tinderbox User generic/RTLogWriteStdErr-stub-generic.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews generic/RTLogWriteStdOut-stub-generic.o \
18920d790825d96ca3943aa2dcb6eb80dc611c5fTinderbox User generic/RTLogWriteUser-generic.o \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews VBox/log-vbox.o \
7a6494cfb6cc7d3f67af07359561e05e6bb8c0edTinderbox User VBox/strformat-vbox.o
77932ac533c711eca5cd86de4e7eca8d91102b43Tinderbox Userendif
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userifneq ($(MAKECMDGOALS),clean)
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userifeq ($(KERNELRELEASE),)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User #
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # building from this directory
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User #
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # kernel base directory
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User ifndef KERN_DIR
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # build for the current kernel, version check
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User KERN_DIR := /lib/modules/$(shell uname -r)/build
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User KERN_DIR := /usr/src/linux
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User $(error Error: unable to find the sources of your current Linux kernel. \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews Specify KERN_DIR=<directory> and run Make again)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User endif
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson $(warning Warning: using /usr/src/linux as the source directory of your \
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User Linux kernel. If this is not correct, specify \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews KERN_DIR=<directory> and run Make again.)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User endif
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # check if versions match -- works only for later 2.6 kernels
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews VBOX_KERN_VER := $(shell $(MAKE) -sC $(KERN_DIR) kernelrelease 2> /dev/null || true)
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews ifneq ($(VBOX_KERN_VER),)
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews ifneq ($(VBOX_KERN_VER),$(shell uname -r))
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews $(error Error: /usr/src/linux (version $(VBOX_KERN_VER)) does not match \
0e573cdd111e060e5f6c18249b5ccacbe8abe278Tinderbox User the current kernel (version $(shell uname -r)))
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews endif
fd972434c29fc1169d66594e4cc7697d33036c2bTinderbox User endif
37d8e0a4455876fe1e4cca511076cc2c5ab9eedeTinderbox User else
37d8e0a4455876fe1e4cca511076cc2c5ab9eedeTinderbox User # build for a dedicated kernel, no version check
fd972434c29fc1169d66594e4cc7697d33036c2bTinderbox User ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont $(error Error: KERN_DIR does not point to a directory)
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews endif
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews endif
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews # includes
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews ifndef KERN_INCL
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews KERN_INCL = $(KERN_DIR)/include
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews endif
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes)
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews $(error Error: unable to find the include directory for your current Linux \
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews kernel. Specify KERN_INCL=<directory> and run Make again)
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews endif
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews # module install dir, only for current kernel
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),)
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews ifndef MODULE_DIR
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews MODULE_DIR_TST := /lib/modules/$(shell uname -r)
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes)
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews MODULE_DIR := $(MODULE_DIR_TST)/misc
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews else
e20788e1216ed720aefa84f3295f7899d9f28c22Mark Andrews $(error Unable to find the folder to install the support driver to)
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews endif
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews endif # MODULE_DIR unspecified
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews endif
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User
37d8e0a4455876fe1e4cca511076cc2c5ab9eedeTinderbox User # guess kernel version (24 or 26)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User KERN_VERSION := $(if $(wildcard $(KERN_DIR)/Rules.make),24,26)
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewselse # neq($(KERNELRELEASE),)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews #
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User # building from Linux-2.6-kbuild (make -C <kernel_directory> M=`pwd`)
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater #
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews KERN_VERSION := 26
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsendif # neq($(KERNELRELEASE),)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User# debug - show guesses.
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userifdef DEBUG
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews$(warning dbg: KERN_DIR = $(KERN_DIR))
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User$(warning dbg: KERN_INCL = $(KERN_INCL))
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews$(warning dbg: MODULE_DIR = $(MODULE_DIR))
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User$(warning dbg: KERN_VERSION = $(KERN_VERSION))
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updaterendif
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# Compiler options
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userifndef INCL
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL))
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User ifndef KBUILD_EXTMOD
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews KBUILD_EXTMOD := $(shell pwd)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User endif
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews INCL += $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User export INCL
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic Updaterendif
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserKFLAGS := -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsifndef CONFIG_VBOXDRV_FIXEDMAJOR
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User KFLAGS += -DCONFIG_VBOXDRV_AS_MISC
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsendif
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userifeq ($(BUILD_TARGET_ARCH),amd64)
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater KFLAGS += -DRT_ARCH_AMD64
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userelse
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews KFLAGS += -DRT_ARCH_X86
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userendif
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsifeq ($(BUILD_TYPE),debug)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User KFLAGS += -DDEBUG -DDEBUG_$(USER)
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonendif
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# Use the RTR0MemObj API - testing.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# If this makes testboxes crash/burn/leak disable it and add a comment to defect #2116.
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#
5f7586ddbd3edd11272cdd30ed613d936129328bTinderbox UserKFLAGS += -DUSE_NEW_OS_INTERFACE_FOR_MM
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserOBJS += r0drv/memobj-r0drv.o \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews r0drv/linux/memobj-r0drv-linux.o
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userifeq ($(BUILD_TARGET_ARCH),x86) # Some gcc versions ends up needing __divdi3.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsOBJS += math/gcc/qdivrem.o \
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User math/gcc/divdi3.o
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrewsendif
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrewsifeq ($(KERN_VERSION), 24)
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User# 2.4
37d8e0a4455876fe1e4cca511076cc2c5ab9eedeTinderbox UserTOPDIR = $(KERN_DIR)
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox UserMODULE_EXT := o
933799f3641f4f78445d015008bad0038900a82aTinderbox UserEXTRA_CFLAGS := -DVBOX_LINUX_2_4
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User$(MODULE)-objs = $(OBJS)
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrewselse
7ca715ad1587a68a531ea1cdea07515d7232567eTinderbox User# 2.6 and later
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox UserMODULE_EXT := ko
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater$(MODULE)-y := $(OBJS)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updaterendif
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews# build defs
933799f3641f4f78445d015008bad0038900a82aTinderbox UserEXTRA_CFLAGS += $(INCL) $(KFLAGS) $(KDEBUG)
8e5fce1f9ceba17dd7e3ff0eb287e1e999c14249Mark Andrews
933799f3641f4f78445d015008bad0038900a82aTinderbox Userall: $(MODULE)
4151211e6649332f7b5a55870cbe37128bcc7b29Tinderbox User
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrewsobj-m += $(MODULE).o
bc0a53583d92309bebcf93c408e2f3247ebd3d3cAutomatic Updater
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater$(MODULE):
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $(MAKE) KBUILD_VERBOSE=1 -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater
b02be031b9ff37b042adc8e68e36b8bbc1f672b7Tinderbox Userifeq ($(KERN_VERSION), 24)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# 2.4 Module linking
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater#
3ec8f7777ea2b04fc1ebb63077f0916f63b1011aTinderbox User$(MODULE).o: $(OBJS)
d7d105151a78d35afb4233d2a6dbd47b7ec0d9a5Tinderbox User $(LD) -o $@ -r $(OBJS)
b02be031b9ff37b042adc8e68e36b8bbc1f672b7Tinderbox User
933799f3641f4f78445d015008bad0038900a82aTinderbox Userinclude $(KERN_DIR)/Rules.make
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
19b3dc94bce93fa76bd7e066f9298630dbc9dcb4Automatic Updaterendif
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterinstall: $(MODULE)
7f94d9a8162c9a96b56e66176702b66e79d8e1a2Automatic Updater @mkdir -p $(MODULE_DIR); \
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater PATH="$(PATH):/bin:/sbin" depmod -ae; \
5ecad47f69b3fd945472ab2900a9ff826a7ce2f6Automatic Updater rm -f /etc/vbox/module_not_compiled
37d8e0a4455876fe1e4cca511076cc2c5ab9eedeTinderbox User
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrewsinstall_rpm: $(MODULE)
c2abd6efeb9affa70aabb63da2acb23e135cf7f2Mark Andrews @mkdir -p $(MODULE_DIR); \
e21f41f6504b3381be86cbe7f457f9ee1fff947bTinderbox User install -m 0664 $(MODULE).$(MODULE_EXT) $(MODULE_DIR)
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User
96ea71632887c58a9d00f47eb318bf76b35903c3Mark Andrewsendif # eq($(MAKECMDGOALS),clean)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
9cd5eb6fe0f26d65724b99216cb31dcdd12e4afdAutomatic Updaterclean:
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User for f in . linux r0drv r0drv/linux; do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User rm -rf .vboxdrv* .tmp_ver* vboxdrv.* Module.symvers Modules.symvers
4cda4fd158d6ded5586bacea8c388445d99611eaAutomatic Updater