Index: /trunk/src/VBox/Additions/linux/Makefile
===================================================================
--- /trunk/src/VBox/Additions/linux/Makefile	(revision 85938)
+++ /trunk/src/VBox/Additions/linux/Makefile	(revision 85939)
@@ -60,5 +60,5 @@
 	fi
 
-vboxvideo:
+vboxvideo: vboxguest
 	+ $(VBOX_QUIET_SH)if [ -d vboxvideo ]; then \
 	    if [ -f vboxguest/Module.symvers ]; then \
@@ -75,44 +75,55 @@
 	fi
 
-install:
+install_vboxguest:
 	+ $(VBOX_QUIET)$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxguest install
+
+install_vboxsf:
 	+ $(VBOX_QUIET_SH)if [ -d vboxsf ]; then \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxsf install; \
 	fi
+
+install_vboxvideo:
 	+ $(VBOX_QUIET_SH)if [ -d vboxvideo ]; then \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxvideo install; \
 	fi
 
-clean-vboxdrv:
+install: install_vboxguest install_vboxsf install_vboxvideo
+
+clean_vboxguest:
 	+ $(VBOX_QUIET)$(MAKE) -C vboxguest clean
+	rm -f vboxguest.*o
 
-clean-vboxsf:
+clean_vboxsf:
 	+ $(VBOX_QUIET_SH)if [ -d vboxsf ]; then \
 	    $(MAKE) -C vboxsf clean; \
 	fi
+	rm -f vboxsf.*o
 
-clean-vboxvideo:
+clean_vboxvideo:
 	+ $(VBOX_QUIET_SH)if [ -d vboxvideo ]; then \
 	    $(MAKE) -C vboxvideo clean; \
 	fi
+	rm -f vboxvideo.*o
 
-clean-misc:
-	rm -f vboxguest.*o vboxsf.*o vboxvideo.*o
-
-clean: clean-vboxdrv clean-vboxsf clean-vboxvideo clean-misc
+clean: clean_vboxguest clean_vboxsf clean_vboxvideo
 
 check:
 	$(VBOX_QUIET)$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxguest check
 
-load:
+unload:
 	$(VBOX_QUIET)/sbin/rmmod vboxvideo || true
 	$(VBOX_QUIET)/sbin/rmmod vboxvfs || true
 	$(VBOX_QUIET)/sbin/rmmod vboxsf || true
 	$(VBOX_QUIET)/sbin/rmmod vboxguest || true
+
+load: unload
 	$(VBOX_QUIET)/sbin/insmod vboxguest.ko
 	$(VBOX_QUIET)if [ -f vboxsf.ko ]; then /sbin/insmod vboxsf.ko; fi
 	$(VBOX_QUIET)if [ -f vboxvideo.ko ]; then /sbin/insmod vboxvideo.ko; fi
 
-.PHONY: vboxguest vboxsf vboxvideo all install clean check load
+.PHONY: all install clean check unload load \
+    vboxguest vboxsf vboxvideo \
+    install_vboxguest install_vboxsf install_vboxvideo \
+    clean_vboxguest clean_vboxsf clean_vboxvideo
 
 endif # ! KERNELRELEASE
Index: /trunk/src/VBox/Additions/linux/drm/Makefile.module.kms
===================================================================
--- /trunk/src/VBox/Additions/linux/drm/Makefile.module.kms	(revision 85938)
+++ /trunk/src/VBox/Additions/linux/drm/Makefile.module.kms	(revision 85939)
@@ -22,4 +22,10 @@
 include $(obj)/Makefile-header.gmk
 VBOXDRM_DIR = $(VBOX_MODULE_SRC_DIR)
+
+# Allow building directly from the subdirectory without assuming the toplevel
+# makefile has done the copying. Not the default use case, but can be handy.
+ifndef KBUILD_EXTRA_SYMBOLS
+KBUILD_EXTRA_SYMBOLS=$(abspath $(VBOXDRM_DIR)/../vboxguest/Module.symvers)
+endif
 
 # We want to build on Linux 3.11 and later and on all EL 7 kernels.
Index: /trunk/src/VBox/Additions/linux/sharedfolders/Makefile.module
===================================================================
--- /trunk/src/VBox/Additions/linux/sharedfolders/Makefile.module	(revision 85938)
+++ /trunk/src/VBox/Additions/linux/sharedfolders/Makefile.module	(revision 85939)
@@ -22,4 +22,10 @@
 include $(obj)/Makefile-header.gmk
 VBOXSF_DIR = $(VBOX_MODULE_SRC_DIR)
+
+# Allow building directly from the subdirectory without assuming the toplevel
+# makefile has done the copying. Not the default use case, but can be handy.
+ifndef KBUILD_EXTRA_SYMBOLS
+KBUILD_EXTRA_SYMBOLS=$(abspath $(VBOXSF_DIR)/../vboxguest/Module.symvers)
+endif
 
 VBOXMOD_NAME = vboxsf
Index: /trunk/src/VBox/HostDrivers/Support/linux/Makefile
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/linux/Makefile	(revision 85938)
+++ /trunk/src/VBox/HostDrivers/Support/linux/Makefile	(revision 85939)
@@ -25,10 +25,8 @@
 #
 
-# Find the directory of this makefile.
-VBOXDRV_DIR := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
-
 # Linux kbuild sets this to our source directory if we are called from there
 obj ?= $(CURDIR)
 include $(obj)/Makefile-header.gmk
+VBOXDRV_DIR := $(VBOX_MODULE_SRC_DIR)
 
 VBOXMOD_NAME = vboxdrv
Index: /trunk/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile	(revision 85938)
+++ /trunk/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile	(revision 85939)
@@ -25,10 +25,14 @@
 #
 
-# Find the directory of this makefile.
-VBOXNETADPT_DIR := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
-
 # Linux kbuild sets this to our source directory if we are called from there
 obj ?= $(CURDIR)
 include $(obj)/Makefile-header.gmk
+VBOXNETADP_DIR := $(VBOX_MODULE_SRC_DIR)
+
+# Allow building directly from the subdirectory without assuming the toplevel
+# makefile has done the copying. Not the default use case, but can be handy.
+ifndef KBUILD_EXTRA_SYMBOLS
+KBUILD_EXTRA_SYMBOLS=$(abspath $(VBOXNETADP_DIR)/../vboxdrv/Module.symvers)
+endif
 
 VBOXMOD_NAME = vboxnetadp
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile	(revision 85938)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile	(revision 85939)
@@ -25,10 +25,14 @@
 #
 
-# Find the directory of this makefile.
-VBOXNETFLT_DIR := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
-
 # Linux kbuild sets this to our source directory if we are called from there
 obj ?= $(CURDIR)
 include $(obj)/Makefile-header.gmk
+VBOXNETFLT_DIR := $(VBOX_MODULE_SRC_DIR)
+
+# Allow building directly from the subdirectory without assuming the toplevel
+# makefile has done the copying. Not the default use case, but can be handy.
+ifndef KBUILD_EXTRA_SYMBOLS
+KBUILD_EXTRA_SYMBOLS=$(abspath $(VBOXNETFLT_DIR)/../vboxdrv/Module.symvers)
+endif
 
 VBOXMOD_NAME = vboxnetflt
Index: /trunk/src/VBox/HostDrivers/VBoxPci/linux/Makefile
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxPci/linux/Makefile	(revision 85938)
+++ /trunk/src/VBox/HostDrivers/VBoxPci/linux/Makefile	(revision 85939)
@@ -25,10 +25,15 @@
 #
 
-# Find the directory of this makefile.
-VBOXPCI_DIR := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
 
 # Linux kbuild sets this to our source directory if we are called from there
 obj ?= $(CURDIR)
 include $(obj)/Makefile-header.gmk
+VBOXPCI_DIR := $(VBOX_MODULE_SRC_DIR)
+
+# Allow building directly from the subdirectory without assuming the toplevel
+# makefile has done the copying. Not the default use case, but can be handy.
+ifndef KBUILD_EXTRA_SYMBOLS
+KBUILD_EXTRA_SYMBOLS=$(abspath $(VBOXPCI_DIR)/../vboxdrv/Module.symvers)
+endif
 
 # override is required by the Debian guys
Index: /trunk/src/VBox/HostDrivers/linux/Makefile
===================================================================
--- /trunk/src/VBox/HostDrivers/linux/Makefile	(revision 85938)
+++ /trunk/src/VBox/HostDrivers/linux/Makefile	(revision 85939)
@@ -46,6 +46,8 @@
 KBUILD_VERBOSE ?=
 KERN_VER ?= $(shell uname -r)
-.PHONY: all install clean check unload load vboxdrv vboxnetflt vboxnetadp \
-    vboxpci
+.PHONY: all install clean check unload load \
+    vboxdrv vboxnetflt vboxnetadp vboxpci \
+    install_vboxdrv install_vboxnetflt install_vboxnetadp install_vboxpci \
+    clean_vboxdrv clean_vboxnetflt clean_vboxnetadp clean_vboxpci
 
 all: vboxdrv vboxnetflt vboxnetadp vboxpci
@@ -93,15 +95,23 @@
 	fi
 
-install:
+install_vboxdrv:
 	+@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxdrv install
+
+install_vboxnetflt:
 	+@if [ -d vboxnetflt ]; then \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetflt install; \
 	fi
+
+install_vboxnetadp:
 	+@if [ -d vboxnetadp ]; then \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetadp install; \
 	fi
+
+install_vboxpci:
 	+@if [ -d vboxpci ]; then \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxpci install; \
 	fi
+
+install: install_vboxdrv install_vboxnetflt install_vboxnetadp install_vboxpci
 
 else
@@ -115,16 +125,27 @@
 endif
 
-clean:
+clean_vboxdrv:
 	+@$(MAKE) -C vboxdrv clean
+	rm -rf vboxdrv.ko
+
+clean_vboxnetflt:
 	+@if [ -d vboxnetflt ]; then \
 	    $(MAKE) -C vboxnetflt clean; \
 	fi
+	rm -rf vboxnetflt.ko
+
+clean_vboxnetadp:
 	+@if [ -d vboxnetadp ]; then \
 	    $(MAKE) -C vboxnetadp clean; \
 	fi
+	rm -rf vboxnetadp.ko
+
+clean_vboxpci:
 	+@if [ -d vboxpci ]; then \
 	    $(MAKE) -C vboxpci clean; \
 	fi
-	rm -f vboxdrv.ko vboxnetflt.ko vboxnetadp.ko vboxpci.ko
+	rm -f vboxpci.ko
+
+clean: clean_vboxdrv clean_vboxnetflt clean_vboxnetadp clean_vboxpci
 
 check:
