Index: configure
===================================================================
--- configure	(revision 37995)
+++ configure	(working copy)
@@ -51,6 +51,9 @@
     ;;
   freebsd)
     ;;
+  gnu/kfreebsd)
+    OS='gnukfreebsd'
+    ;;
   sunos)
     OS='solaris'
     ;;
@@ -922,7 +925,7 @@
   [ -n "$INCZ" ] && I_INCZ=`prefix_I "$INCZ"`
   if test_compile "$LIBZ $I_INCZ" zlib zlib; then
     if test_execute; then
-      echo "if1of (\$(KBUILD_TARGET),darwin freebsd linux solaris)" >> $CNF
+      echo "if1of (\$(KBUILD_TARGET),darwin freebsd linux gnukfreebsd solaris)" >> $CNF
       cnf_append " SDK_VBOX_ZLIB_LIBS" "`strip_l "$LIBZ"`"
       cnf_append " SDK_VBOX_ZLIB_INCS" "$INCZ"
       echo "endif" >> $CNF
@@ -2180,7 +2183,7 @@
 [ $WITH_GSOAP   -eq 0 ] && echo "  --enable-webservice      enable the webservice stuff"
 [ $OSE          -eq 1 ] && echo "  --enable-vnc             enable the VNC server"
 [ $WITH_DOCS    -eq 1 ] && echo "  --disable-docs           don't build the documentation"
-[ "$OS" = "linux" -o "$OS" = "freebsd" ] && echo "  --enable-vde             enable VDE networking"
+[ "$OS" = "linux" -o "$OS" = "freebsd" -o "$OS" = "gnukfreebsd" ] && echo "  --enable-vde             enable VDE networking"
 cat << EOF
   --disable-udptunnel      disable UDP tunnel networking
   --disable-hardening      don't be strict about /dev/vboxdrv access
@@ -2570,7 +2573,7 @@
 [ $WITH_JAVA   -eq 1 ] && check_java
 
 # PulseAudio
-if [ "$OS" = "linux" -o "$OS" = "freebsd" ]; then
+if [ "$OS" = "linux" -o "$OS" = "freebsd" -o "$OS" = "gnukfreebsd" ]; then
   if [ $WITH_PULSE -eq 1 ]; then
     check_pulse
   elif [ $WITH_PULSE -eq 0 ]; then
@@ -2605,6 +2608,12 @@
   [ $OSE -ge 1 ] && check_makeself
 fi
 
+if [ "$OS" = "gnukfreebsd" ]; then
+  cnf_append "VBOX_WITH_VBOXDRV" ""
+  cnf_append "VBOX_WITH_ADDITION_DRIVERS" ""
+  check_compiler_h
+fi
+
 [ -n "$SETUP_WINE" ] && setup_wine
 
 if [ $OSE -ge 1 ]; then
@@ -2621,7 +2630,7 @@
 fi
 
 # VDE
-if [ "$OS" = "linux" -o "$OS" = "freebsd" ]; then
+if [ "$OS" = "linux" -o "$OS" = "freebsd" -o "$OS" = "gnukfreebsd" ]; then
   if [ $WITH_VDE -eq 1 ]; then
     cnf_append "VBOX_WITH_VDE" "1"
   fi
Index: Config.kmk
===================================================================
--- Config.kmk	(revision 37995)
+++ Config.kmk	(working copy)
@@ -223,6 +223,8 @@
   VBOX_PACKAGE_OS = SOLARIS
 else ifeq ($(KBUILD_TARGET),os2)
   VBOX_PACKAGE_OS = OS2
+else ifeq ($(KBUILD_TARGET),gnukfreebsd)
+  VBOX_PACKAGE_OS = GNU/kFreeBSD
 else if1of ($(KBUILD_TARGET), dragonfly freebsd netbsd openbsd)
   VBOX_PACKAGE_OS = BSD
 else
@@ -252,8 +254,8 @@
 ## @{
 # This indicates that additions (of some kind or another) is being _built_.
 # VBOX_WITHOUT_ADDITIONS overrides it.
-#if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
-if1of ($(KBUILD_TARGET), freebsd linux solaris win)
+#if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux os2 solaris win)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux solaris win)
  VBOX_WITH_ADDITIONS = 1
 endif
 # Build the optional ring-0 part of the additions for syntax checking.
@@ -262,7 +264,7 @@
  VBOX_WITH_ADDITION_DRIVERS = 1
 endif
 # Build X11 additions. Can be disabled separately.
-if1of ($(KBUILD_TARGET), dragonfly freebsd linux netbsd openbsd solaris)
+if1of ($(KBUILD_TARGET), dragonfly freebsd gnukfreebsd linux netbsd openbsd solaris)
  VBOX_WITH_X11_ADDITIONS = 1
 endif
 # Enable the building of shared folders in the windows additions.
@@ -297,7 +299,7 @@
 # Include documentation in the package
 VBOX_WITH_DOCS_PACKING = 1
 # Include CHM when building docs (unset in LocalConfig.kmk to suppress CHM)
-ifn1of ($(KBUILD_TARGET), linux)
+ifn1of ($(KBUILD_TARGET), linux gnukfreebsd)
  VBOX_WITH_DOCS_CHM = 1
 endif
 # Don't bother with documentation, overrides VBOX_WITH_DOCS.
@@ -361,7 +363,7 @@
  VBOX_WITH_DBUS = 1
 endif
 # Enable building PAM modules
-if1of ($(KBUILD_TARGET), linux solaris)
+if1of ($(KBUILD_TARGET), linux gnukfreebsd solaris)
  VBOX_WITH_PAM = 1
 endif
 # Disable WINMM support for Windows (not implemented).
@@ -371,7 +373,7 @@
 # Enable Host Guest Shared Memory Interface
 VBOX_WITH_HGSMI = 1
 # Enable Video 2D Acceleration
-if1of ($(KBUILD_TARGET), darwin linux win freebsd)
+if1of ($(KBUILD_TARGET), darwin linux gnukfreebsd win freebsd)
  VBOX_WITH_VIDEOHWACCEL = 1
 endif
 # Enable Wddm Video driver for Vista+ guests
@@ -439,7 +441,7 @@
 # Enable MSI support in devices
 VBOX_WITH_MSI_DEVICES = 1
 # Enable host network interface API.
-if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd gnukfreebsd linux solaris win)
  VBOX_WITH_HOSTNETIF_API = 1
 endif
 ## @}
@@ -455,7 +457,7 @@
 VBOX_WITH_MAIN = 1
 # Set this to prefix all C symbols in XPCOM, to avoid dynamic linking problems
 # caused by our XPCOM library polluting the symbol namespace for system libs.
-if1of ($(KBUILD_TARGET), linux solaris)
+if1of ($(KBUILD_TARGET), linux gnukfreebsd solaris)
  VBOX_WITH_XPCOM_NAMESPACE_CLEANUP = 1
 endif
 # Set this to not use COM or XPCOM in places where it can be avoided.
@@ -492,7 +494,7 @@
 #VBOX_WITH_VBOXFB = 1
 # Enables the Python<->XPCOM and Python<->COM bindings.
 VBOX_WITH_PYTHON ?= 1
-if1of ($(KBUILD_TARGET), darwin linux solaris)
+if1of ($(KBUILD_TARGET), darwin linux gnukfreebsd solaris)
  # Enable Java<->XPCOM bridge + glue code
  VBOX_WITH_JXPCOM ?= 1
 endif
@@ -516,7 +518,7 @@
 VBOX_WITH_TESTCASES = 1
 # Enables the ffmpeg module for recording test runs.
 # TODO: Enable this for normal build server builds?
-#if1of ($(KBUILD_TARGET), linux)
+#if1of ($(KBUILD_TARGET), linux gnukfreebsd)
 # VBOX_WITH_FFMPEG = 1
 #endif
 # Enable shared folders
@@ -528,13 +530,13 @@
 # Enable this to prevent the guest from writing guest properties.
 VBOX_WITH_GUEST_PROPS_RDONLY_GUEST =
 # Enable the guest control service.
-if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd gnukfreebsd linux solaris win)
  VBOX_WITH_GUEST_CONTROL = 1
 endif
 # Enable ballooning
 VBOX_WITH_MEMBALLOON = 1
 # Enable crOpenGL service
-if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd gnukfreebsd linux solaris win)
  VBOX_WITH_CROGL = 1
 endif
 # Enable the VNC server in VBoxHeadless (GPL only).
@@ -547,21 +549,21 @@
 ## @name Networking
 ## @{
 # Use VBoxNetFlt for host interface networking.
-if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd gnukfreebsd linux solaris win)
  VBOX_WITH_NETFLT = 1
  ifeq ($(KBUILD_TARGET),solaris)
  # Disabled until some Nevada version ships the required headers.
  #  VBOX_WITH_NETFLT_CROSSBOW = 1
  endif
  # Use VBoxNetAdp for host only networking.
- if1of ($(KBUILD_TARGET), darwin freebsd linux solaris) ## @todo this should be set and used on windows too.
+ if1of ($(KBUILD_TARGET), darwin freebsd gnukfreebsd linux solaris) ## @todo this should be set and used on windows too.
   VBOX_WITH_NETADP = 1
  endif
 endif
 # Enables the UDP tunnel transport.
 VBOX_WITH_UDPTUNNEL = 1
 # Enable Virtual Distributed Ethernet or not.
-if1of ($(KBUILD_TARGET), freebsd linux)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux)
  VBOX_WITH_VDE = 1
 endif
 ## @}
@@ -620,7 +622,7 @@
 # Where the application files are (going to be) installed.
 #VBOX_PATH_APP_PRIVATE       = /usr/lib/virtualbox
 ifdef VBOX_WITH_HARDENING
- if1of ($(KBUILD_TARGET), linux solaris)
+ if1of ($(KBUILD_TARGET), linux gnukfreebsd solaris)
   VBOX_PATH_APP_PRIVATE      = /opt/VirtualBox
  else ifeq ($(KBUILD_TARGET),darwin)
   VBOX_PATH_APP_PRIVATE      = /Applications/VirtualBox.app/Contents/MacOS
@@ -661,7 +663,7 @@
 ifdef VBOX_WITH_HARDENING
  if1of ($(KBUILD_TARGET), solaris)
   VBOX_WITH_RUNPATH = $(VBOX_PATH_APP_PRIVATE)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
- else if1of ($(KBUILD_TARGET), freebsd linux)
+ else if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux)
   VBOX_WITH_RUNPATH = $(VBOX_PATH_APP_PRIVATE)
  endif
 endif
@@ -670,7 +672,7 @@
 # things gets a bit complicated since the $ORIGIN+setuid policy differs.
 #VBOX_WITH_ORIGIN = 1
 ifndef VBOX_WITH_HARDENING
- if1of ($(KBUILD_TARGET), linux solaris)
+ if1of ($(KBUILD_TARGET), linux gnukfreebsd solaris)
   VBOX_WITH_ORIGIN = 1
  endif
 endif
@@ -709,7 +711,7 @@
 ## For experimenting with disabling preemption instead of interrupts
 # when working VT-x/AMD-V in VMMR0.
 ## @todo os2? Reconsider perhaps windows? (see defect) This should be made the default.
-if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd gnukfreebsd linux solaris win)
  VBOX_WITH_VMMR0_DISABLE_PREEMPTION = 1
 endif
 # Mask all Local APIC interrupt vectors which are set up to NMI mode when switching
@@ -932,14 +934,14 @@
  VBOX_WITH_OS2_ADDITIONS_BIN=
  VBOX_WITH_SECURELABEL=
  VBOX_WITH_KCHMVIEWER=
- ifn1of ($(KBUILD_TARGET), linux)
+ ifn1of ($(KBUILD_TARGET), linux gnukfreebsd)
   VBOX_WITH_DOCS=
   VBOX_WITH_DOCS_PACKING=
  endif
  VBOX_WITH_TESTSUITE=
  VBOX_WITH_INTEL_PXE=
  VBOX_WITH_FFMPEG=
- ifn1of ($(KBUILD_TARGET), darwin linux solaris win)
+ ifn1of ($(KBUILD_TARGET), darwin linux gnukfreebsd solaris win)
   VBOX_WITH_INSTALLER=
  endif
  # branding
@@ -973,7 +975,7 @@
   VBOX_PATH_SHARED_LIBS=
   VBOX_PATH_APP_DOCS=
   VBOX_WITH_RUNPATH=
-  if1of ($(KBUILD_TARGET), linux solaris)
+  if1of ($(KBUILD_TARGET), linux gnukfreebsd solaris)
    VBOX_WITH_ORIGIN=1
   endif
  endif
@@ -1087,7 +1089,7 @@
 #
 # Image and object format config.
 #
-if1of ($(KBUILD_TARGET), freebsd linux l4 netbsd openbsd solaris)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux l4 netbsd openbsd solaris)
  VBOX_LDR_FMT = elf
 endif
 ifeq ($(KBUILD_TARGET),darwin)
@@ -1344,6 +1346,7 @@
 DEFS.freebsd = RT_OS_FREEBSD __FREEBSD__
 DEFS.l4      = RT_OS_L4 __L4__ __L4ENV__ L4API_l4v2 ARCH_$(KBUILD_TARGET_ARCH) __NO_CTYPE _FILE_OFFSET_BITS=64
 DEFS.linux   = RT_OS_LINUX _FILE_OFFSET_BITS=64
+DEFS.gnukfreebsd = _FILE_OFFSET_BITS=64
 DEFS.netbsd  = RT_OS_NETBSD
 DEFS.openbsd = RT_OS_OPENBSD
 DEFS.os2     = RT_OS_OS2 __OS2__
@@ -1491,7 +1494,7 @@
 #
 # Add the output dir(s) to the dynamic loader search path.
 #
-if1of ($(KBUILD_HOST), freebsd linux l4 netbsd openbsd solaris)
+if1of ($(KBUILD_HOST), freebsd gnukfreebsd linux l4 netbsd openbsd solaris)
  export LD_LIBRARY_PATH:=$(PATH_BIN):$(PATH_LIB):$(LD_LIBRARY_PATH)
 endif
 ifeq ($(KBUILD_HOST),os2)
@@ -1524,7 +1527,7 @@
  LIB_XPCOM       = $(PATH_BIN)/VBoxXPCOM.s.so
  LIB_DDU         = $(PATH_BIN)/VBoxDDU.s.so
 endif
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux netbsd openbsd solaris)
  LIB_RUNTIME     = $(PATH_BIN)/VBoxRT.so
  LIB_RUNTIME_EF  = $(PATH_LIB)/RuntimeEFCPP.a
  LIB_KPROFILE    = $(PATH_BIN)/kPrf2.so
@@ -1684,7 +1687,7 @@
 
 # We need to export YASM for OSE, but since it was converted to .zip we need to
 # allow for the location used by the zip to be properly cleaned up first.
-if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH), linux.x86 solaris.x86 win.x86)
+if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH), linux.x86 gnukfreebsd.x86 solaris.x86 win.x86)
  PATH_TOOL_YASM ?= $(PATH_DEVTOOLS_BLD)/bin
 endif
 
@@ -1959,7 +1962,7 @@
   VBOX_LIB_OGL_HOSTCRUTIL = $(PATH_BIN)/VBoxOGLhostcrutil$(VBOX_SUFF_DLL)
  endif
 
- if1of ($(KBUILD_TARGET), freebsd linux solaris)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux solaris)
  # VBOX_PATH_MESA_SOURCE = $(PATH_ROOT)/src/libs/mesa-7.2
   VBOX_PATH_MESA_SOURCE = $(VBOX_PATH_X11_ROOT)/mesa-7.2
   VBOX_MESA_INCS = \
@@ -2378,7 +2381,7 @@
  SDK_VBOX_LIBXSLT_LIBS   ?= $(PATH_LIB)/VBox-libxslt$(VBOX_SUFF_LIB)
  SDK_VBOX_LIBXSLT_DEFS   ?=
  SDK_VBOX_LIBXSLT_DEFS.win += WIN32 _WINDOWS _MBCS _REENTRANT
-#else if1of ($(KBUILD_TARGET), linux)
+#else if1of ($(KBUILD_TARGET), linux gnukfreebsd)
 # SDK_VBOX_LIBXSLT_INCS      ?=
 # SDK_VBOX_LIBXSLT_LIBS      ?=
 # SDK_VBOX_LIBXSLT_CFLAGS    ?= $(shell pkg-config libxslt-1.0 --cflags)
@@ -2401,6 +2404,7 @@
  SDK_VBOX_ZLIB_INCS  ?=
  SDK_VBOX_ZLIB_LIBS  ?= z
  SDK_VBOX_ZLIB_DEFS.linux ?= _LARGEFILE64_SOURCE
+ SDK_VBOX_ZLIB_DEFS.gnukfreebsd ?= _LARGEFILE64_SOURCE
 endif
 
 SDK_VBOX_OPENSSL      = Only for VBoxRT and/or statically linked programs.
@@ -2411,7 +2415,7 @@
 	$(PATH_LIB)/VBox-libssl$(VBOX_SUFF_LIB) \
 	$(PATH_LIB)/VBox-libcrypto$(VBOX_SUFF_LIB) \
 # Build entire openssl library, not just the minimal subset.
-if1of ($(KBUILD_TARGET), linux solaris)
+if1of ($(KBUILD_TARGET), linux gnukfreebsd solaris)
  VBOX_OPENSSL_ALL = 1
 endif
 
@@ -2435,7 +2439,7 @@
 endif
 
 SDK_VBOX_FFMPEG       = .
-if1of ($(KBUILD_TARGET), darwin linux os2 solaris win)
+if1of ($(KBUILD_TARGET), darwin linux gnukfreebsd os2 solaris win)
  SDK_VBOX_FFMPEG_INCS ?= \
 	$(PATH_ROOT)/src/libs/ffmpeg-20060710/libavutil \
 	$(PATH_ROOT)/src/libs/ffmpeg-20060710/libavcodec \
@@ -2879,7 +2883,7 @@
 TEMPLATE_VBOXR0DRV_CXXFLAGS.amd64     = $(TEMPLATE_VBOXR0DRV_CFLAGS.amd64)
 endif # Solaris
 
-ifeq ($(KBUILD_TARGET),freebsd)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
 # x86 FreeBSD (6.2 or something):
 #  cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE \
 #   -nostdinc -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include \
@@ -3097,8 +3101,8 @@
 	-T$(L4_LIBDIR)/../main_dyn.ld -nostdlib \
 	-Wl,--export-dynamic,--dynamic-linker=libld-l4.s.so \
 	-Wl,--rpath-link,$(L4_LIBDIR)
-TEMPLATE_VBOXR3EXE_LDFLAGS.linux       = -Wl,-z,noexecstack $(VBOX_LD_as_needed)
- ifeq ($(KBUILD_TARGET),linux)
+ if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+TEMPLATE_VBOXR3EXE_LDFLAGS            += -Wl,-z,noexecstack $(VBOX_LD_as_needed)
 TEMPLATE_VBOXR3EXE_LIBS                = pthread m rt dl
  else ifeq ($(KBUILD_TARGET),l4)
 TEMPLATE_VBOXR3EXE_LIBS                = \
@@ -3147,6 +3151,7 @@
  endif
  ifdef VBOX_WITH_ORIGIN
   TEMPLATE_VBOXR3EXE_LDFLAGS.linux    += $(VBOX_GCC_ORIGIN_OPT)
+  TEMPLATE_VBOXR3EXE_LDFLAGS.gnukfreebsd    += $(VBOX_GCC_ORIGIN_OPT)
  endif
 endif
 
@@ -3189,7 +3194,7 @@
 #				       -
 TEMPLATE_VBoxR3DllNoPic                = VBox ring-3 SO/DLLs without PIC, without warnings.
 TEMPLATE_VBoxR3DllNoPic_EXTENDS        = VBOXR3
-if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), linux.x86 freebsd.x86)
+if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), linux.x86 freebsd.x86 gnukfreebsd.x86)
  TEMPLATE_VBoxR3DllNoPic_DEFS          = $(TEMPLATE_VBOXR3EXE_DEFS)
  TEMPLATE_VBoxR3DllNoPic_CFLAGS        = $(TEMPLATE_VBOXR3EXE_CFLAGS)   $(VBOX_GCC_WERR)
  TEMPLATE_VBoxR3DllNoPic_CXXFLAGS      = $(TEMPLATE_VBOXR3EXE_CXXFLAGS) $(VBOX_GCC_WERR)
@@ -3208,7 +3213,7 @@
 #				       -
 TEMPLATE_VBoxR3DllWarnNoPic                = VBox ring-3 SO/DLLs without PIC, with warnings.
 TEMPLATE_VBoxR3DllWarnNoPic_EXTENDS        = VBOXR3
-if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), linux.x86 freebsd.x86)
+if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), linux.x86 freebsd.x86 gnukfreebsd.x86)
  TEMPLATE_VBoxR3DllWarnNoPic_DEFS          = $(TEMPLATE_VBOXR3EXE_DEFS)
  TEMPLATE_VBoxR3DllWarnNoPic_CFLAGS        = $(TEMPLATE_VBOXR3EXE_CFLAGS)
  TEMPLATE_VBoxR3DllWarnNoPic_CXXFLAGS      = $(TEMPLATE_VBOXR3EXE_CXXFLAGS)
@@ -3306,6 +3311,7 @@
 ifn1of ($(KBUILD_TARGET), win os2)
  TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
  TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
+ TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.gnukfreebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.gnukfreebsd))
 endif
 
 #
@@ -3332,6 +3338,7 @@
  endif
  ifdef VBOX_WITH_ORIGIN
   TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
+  TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.gnukfreebsd += $(VBOX_GCC_ORIGIN_OPT)
  endif
 endif
 
@@ -3595,9 +3602,9 @@
 TEMPLATE_VBOXMAINEXE_OBJCXXFLAGS.kprofile= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile)
 TEMPLATE_VBOXMAINEXE_LDFLAGS.x86         = -m32
 TEMPLATE_VBOXMAINEXE_LDFLAGS.amd64       = -m64
- ifeq ($(KBUILD_TARGET),linux)
+ if1of ($(KBUILD_TARGET), linux gnukfreebsd)
 TEMPLATE_VBOXMAINEXE_LIBS                = pthread m rt $(LIB_RUNTIME) dl
-TEMPLATE_VBOXMAINEXE_LDFLAGS.linux       = $(VBOX_LD_as_needed)
+TEMPLATE_VBOXMAINEXE_LDFLAGS            += $(VBOX_LD_as_needed)
  else ifeq ($(KBUILD_TARGET),l4)
 TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME)
 # no libs as yet in l4 target - must be added later
@@ -3640,6 +3647,7 @@
  endif
  ifdef VBOX_WITH_ORIGIN
 TEMPLATE_VBOXMAINEXE_LDFLAGS.linux      += $(VBOX_GCC_ORIGIN_OPT)
+TEMPLATE_VBOXMAINEXE_LDFLAGS.gnukfreebsd      += $(VBOX_GCC_ORIGIN_OPT)
  endif
 
 endif # !win
@@ -3747,6 +3755,8 @@
 	NDEBUG TRIMMED
  TEMPLATE_VBOXMAINCLIENTEXE_CXXFLAGS.linux = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.linux) \
 	-pthread
+ TEMPLATE_VBOXMAINCLIENTEXE_CXXFLAGS.gnukfreebsd = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.gnukfreebsd) \
+	-pthread
 endif
 
 #
@@ -3784,7 +3794,7 @@
   TEMPLATE_VBoxR3ExtPack_CXXFLAGS = $(TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS) -fno-rtti
  endif
  TEMPLATE_VBoxR3ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/
- ifeq ($(KBUILD_TARGET),linux)
+ if1of ($(KBUILD_TARGET), linux gnukfreebsd)
   TEMPLATE_VBoxR3ExtPack_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS))
  else
   if !defined(VBOX_WITH_RUNPATH) && defined(VBOX_WITH_RELATIVE_RUNPATH)
@@ -3916,7 +3926,7 @@
 
  # Hack LD_LIBRARY_PATH for stuff in tools.
  ifdef VBOX_WITH_QT4_SUN
-  if1of ($(KBUILD_TARGET), linux)
+  if1of ($(KBUILD_TARGET), linux gnukfreebsd)
    export LD_LIBRARY_PATH := $(VBOX_PATH_QT4_LIB):$(LD_LIBRARY_PATH)
   endif
  endif
@@ -3984,6 +3994,7 @@
  else # the gcc guys:
   TEMPLATE_VBOXQT4GUIEXE_TOOL = $(VBOX_GCC_TOOL)
   TEMPLATE_VBOXQT4GUIEXE_DEFS.linux = _REENTRANT
+  TEMPLATE_VBOXQT4GUIEXE_DEFS.gnukfreebsd = _REENTRANT
 
   TEMPLATE_VBOXQT4GUIEXE_DEFS.solaris = _REENTRANT
 
@@ -3997,6 +4008,7 @@
   TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.x86 = -m32
   TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.amd64 = -m64
   TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.linux = -pthread
+  TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.gnukfreebsd = -pthread
   TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS = -g -pipe $(VBOX_GCC_PEDANTIC_C) -Wno-long-long -fno-exceptions
   TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS.x86 = $(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.x86)
   TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS.amd64 = $(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.amd64)
@@ -4014,7 +4026,7 @@
 	$(LIB_REM) \
 	$(LIB_VMM)
 
-  ifeq ($(KBUILD_TARGET),linux)
+  if1of ($(KBUILD_TARGET), linux gnukfreebsd)
    TEMPLATE_VBOXQT4GUIEXE_LDFLAGS += $(VBOX_LD_as_needed)
    TEMPLATE_VBOXQT4GUIEXE_LIBS += \
      $(VBOX_XCURSOR_LIBS) \
@@ -4201,7 +4213,7 @@
 TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc32     = -m32
 TEMPLATE_VBOXBLDPROG_LDFLAGS.amd64       = -m64
 TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc64     = -m64
- ifeq ($(KBUILD_HOST),linux)
+ if1of ($(KBUILD_HOST), linux gnukfreebsd)
 TEMPLATE_VBOXBLDPROG_LIBS                = pthread m rt dl
  else ifeq ($(KBUILD_HOST),os2)
 TEMPLATE_VBOXBLDPROG_TOOL                = GXX3OMF
@@ -4283,6 +4295,10 @@
 	$(TEMPLATE_VBOXBLDPROG_LIBS) \
 	crypt \
 	$(TEMPLATE_VBOXBLDPROG_LIBS.linux)
+TEMPLATE_VBoxAdvBldProg_LIBS.gnukfreebsd = \
+	$(TEMPLATE_VBOXBLDPROG_LIBS) \
+	crypt \
+	$(TEMPLATE_VBOXBLDPROG_LIBS.gnukfreebsd)
 TEMPLATE_VBoxAdvBldProg_LIBS.solaris = \
 	$(TEMPLATE_VBOXBLDPROG_LIBS) \
 	contract \
@@ -4369,11 +4385,13 @@
  TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS = $(TEMPLATE_VBOXR3EXE_CXXFLAGS) -fno-exceptions
  TEMPLATE_VBOXGUESTR3EXE_LDFLAGS  = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
  TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
+ TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.gnukfreebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.gnukfreebsd))
 endif
 TEMPLATE_VBOXGUESTR3EXE_INST      = $(INST_ADDITIONS)
 TEMPLATE_VBOXGUESTR3EXE_DEFS     := $(filter-out $(ARCH_BITS_DEFS), $(TEMPLATE_VBOXR3EXE_DEFS)) IN_GUEST IN_GUEST_R3 IN_RT_R3 $(VBOX_GC_ARCH_BITS_DEFS)
 TEMPLATE_VBOXGUESTR3EXE_DEFS.linux := $(TEMPLATE_VBOXR3EXE_DEFS.linux) LOG_USE_C99 RT_WITHOUT_EXEC_ALLOC
-ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux.
+TEMPLATE_VBOXGUESTR3EXE_DEFS.gnukfreebsd := $(TEMPLATE_VBOXR3EXE_DEFS.gnukfreebsd) LOG_USE_C99 RT_WITHOUT_EXEC_ALLOC
+if1of ($(KBUILD_TARGET), linux gnukfreebsd) # As few libs as possible on linux.
  TEMPLATE_VBOXGUESTR3EXE_LIBS     = pthread rt m
 else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
  TEMPLATE_VBOXGUESTR3EXE_LIBS     = $(TEMPLATE_VBOXR3EXE_LIBS) iconv
@@ -4457,7 +4475,7 @@
 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TYPE)   = $(NO_SUCH_VARIABLE)
 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS          = -r
-if1of ($(KBUILD_TARGET), dragonfly freebsd linux netbsd openbsd) # the gnu ld guys.
+if1of ($(KBUILD_TARGET), dragonfly freebsd gnukfreebsd linux netbsd openbsd) # the gnu ld guys.
  TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.release = -S
  TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.x86     = -m elf_i386
  TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.amd64   = -m elf_x86_64
@@ -4491,7 +4509,7 @@
 ifeq ($(KBUILD_TARGET_ARCH),amd64)
  TEMPLATE_VBOXGUESTR3XORGMOD_DEFS += _XSERVER64
 endif
-if1of ($(KBUILD_TARGET), linux)
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
  TEMPLATE_VBOXGUESTR3XORGMOD_LDFLAGS = $(TEMPLATE_VBOXGUESTR3DLL_LDFLAGS)
 endif
 TEMPLATE_VBOXGUESTR3XORGMOD_LIBS = \
@@ -4538,6 +4556,7 @@
 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS             = CHROMIUM_THREADSAFE VBOX_WITH_HGCM UNPACKS
 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.win         = _WIN32_WINNT=0x0500 WINDOWS=1
 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.linux       = Linux=1 _GNU_SOURCE
+TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.gnukfreebsd = _GNU_SOURCE
 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.solaris     = SunOS=1 _GNU_SOURCE #GLEXT_64_TYPES_DEFINED
 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.darwin      = DARWIN=1 GL_GLEXT_LEGACY _GNU_SOURCE
 ifdef VBOX_WITH_COCOA_QT
@@ -4554,6 +4573,7 @@
 	-current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
 	-compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)
 TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.linux    = -Wl,--no-as-needed
+TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.gnukfreebsd    = -Wl,--no-as-needed
 TEMPLATE_VBOXCROGLR3HOSTDLL_BLDDIRS          = $(VBOX_PATH_CROGL_GENFILES)/
 
 #
@@ -4572,6 +4592,7 @@
 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS             = CHROMIUM_THREADSAFE VBOX_WITH_HGCM
 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.win         = WINDOWS=1
 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.linux       = Linux=1 _GNU_SOURCE
+TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.gnukfreebsd = _GNU_SOURCE
 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.solaris     = SunOS=1 _GNU_SOURCE #GLEXT_64_TYPES_DEFINED
 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.darwin      = DARWIN=1 GL_GLEXT_LEGACY _GNU_SOURCE
 ifdef VBOX_WITH_COCOA_QT
@@ -4730,7 +4751,7 @@
 	$(QUIET)$(MV) -f $@.tmp $@
 
 if !defined(VBOX_OSE) && !defined(VBOX_NOINC_LICENSE_VER_KMK)
- if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux netbsd openbsd solaris)
   # VBOX_LICENSE_VER is used in several Makefiles
   VBOX_LICENSE_VER_KMK = $(PATH_OUT)/license-version.kmk
 $(VBOX_LICENSE_VER_KMK): $(VBOX_BRAND_LICENSE_HTML)
Index: src/recompiler/Makefile.kmk
===================================================================
--- src/recompiler/Makefile.kmk	(revision 37995)
+++ src/recompiler/Makefile.kmk	(working copy)
@@ -62,7 +62,9 @@
 ifdef IEM_VERIFICATION_MODE
  VBoxRemPrimary_DEFS          += IEM_VERIFICATION_MODE
 endif
-VBoxRemPrimary_DEFS.linux      = _GNU_SOURCE
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxRemPrimary_DEFS           += _GNU_SOURCE
+endif
 ifdef VBOX_SOLARIS_10
  VBoxRemPrimary_DEFS.solaris   = CONFIG_SOLARIS_VERSION=10
 else
Index: src/apps/Makefile.kmk
===================================================================
--- src/apps/Makefile.kmk	(revision 37995)
+++ src/apps/Makefile.kmk	(working copy)
@@ -28,7 +28,7 @@
   include $(PATH_SUB_CURRENT)/tunctl/Makefile.kmk
  endif
 endif
-if1of ($(KBUILD_TARGET),darwin solaris linux freebsd)
+if1of ($(KBUILD_TARGET),darwin solaris linux freebsd gnukfreebsd)
  ifneq ($(wildcard $(PATH_SUB_CURRENT)/adpctl),)
   include $(PATH_SUB_CURRENT)/adpctl/Makefile.kmk
  endif
Index: src/libs/xpcom18a4/python/Makefile.kmk
===================================================================
--- src/libs/xpcom18a4/python/Makefile.kmk	(revision 37995)
+++ src/libs/xpcom18a4/python/Makefile.kmk	(working copy)
@@ -156,7 +156,7 @@
 VBoxPython_EXTENDS      = VBoxPythonBase
 VBoxPython_DEFS         = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_DEFS))
 VBoxPython_INCS         = $(VBoxPythonBase_INCS) $(VBOX_PYTHONDEF_INC)
-if "$(KBUILD_TARGET)" == "linux"
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
  VBoxPython_LIBS        = $(VBoxPythonBase_LIBS)
 else
  VBoxPython_LIBS        = $(VBoxPythonBase_LIBS) $(VBOX_PYTHONDEF_LIB)
Index: src/libs/xpcom18a4/Config.kmk
===================================================================
--- src/libs/xpcom18a4/Config.kmk	(revision 37995)
+++ src/libs/xpcom18a4/Config.kmk	(working copy)
@@ -56,7 +56,9 @@
 TEMPLATE_XPCOM_CFLAGS.profile      = -O
 TEMPLATE_XPCOM_CFLAGS.freebsd      = -pthread
 TEMPLATE_XPCOM_CFLAGS.l4           = -nostdinc
-TEMPLATE_XPCOM_CFLAGS.linux        = -pthread -ansi
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+TEMPLATE_XPCOM_CFLAGS             += -pthread -ansi
+endif
 TEMPLATE_XPCOM_CFLAGS.solaris      = -fno-omit-frame-pointer # for now anyway.
 TEMPLATE_XPCOM_DEFS                = \
 	MOZILLA_CLIENT=1 \
@@ -75,6 +77,7 @@
 TEMPLATE_XPCOM_DEFS.darwin.amd64   = VBOX_MACOSX_FOLLOWS_UNIX_IO
 TEMPLATE_XPCOM_DEFS.freebsd        = OSTYPE=\"FreeBSD5+\"   OSARCH=\"FreeBSD\" XP_UNIX=1 FREEBSD=1 HAVE_VISIBILITY_ATTRIBUTE=1
 TEMPLATE_XPCOM_DEFS.linux          = OSTYPE=\"Linux2.6\"    OSARCH=\"Linux\"  XP_UNIX=1 _GNU_SOURCE HAVE_VISIBILITY_ATTRIBUTE=1 ## @todo LINUX=1
+TEMPLATE_XPCOM_DEFS.gnukfreebsd    = OSTYPE=\"GNU/kFreeBSD\" OSARCH=\"GNU/kFreeBSD\"  XP_UNIX=1 _GNU_SOURCE HAVE_VISIBILITY_ATTRIBUTE=1
 TEMPLATE_XPCOM_DEFS.l4             = OSTYPE=\"L4ENV\"       OSARCH=\"L4\"     XP_UNIX=1 L4ENV HAVE_VISIBILITY_ATTRIBUTE=1
 # Don't define BSD_SELECT because bsdselect() from kLIBC <= 0.6.3 has problems on SMP
 TEMPLATE_XPCOM_DEFS.os2            = OSTYPE=\"OS/2_4.5\"    OSARCH=\"OS/2\"   XP_OS2 XP_PC OS2=4
@@ -165,7 +168,9 @@
 	$(VBoxXPCOM_1_TARGET) \
 	$(TEMPLATE_XPCOM_LIBS)
 TEMPLATE_XPCOMEXE_LIBS.freebsd     = $(LIB_PTHREAD)
-TEMPLATE_XPCOMEXE_LIBS.linux       = dl $(LIB_PTHREAD)
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+TEMPLATE_XPCOMEXE_LIBS            += dl $(LIB_PTHREAD)
+endif
 TEMPLATE_XPCOMEXE_LIBS.l4          = $(LIB_RUNTIME) $(VBOX_GCC_LIBGCC)
 TEMPLATE_XPCOMEXE_LDFLAGS.darwin   = -bind_at_load $(filter-out -current_version -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD),$(TEMPLATE_XPCOM_LDFLAGS.darwin))
 TEMPLATE_XPCOMEXE_LDFLAGS.l4       = $(L4_DIR)/lib/x86_586/crt0.o \
Index: src/libs/xpcom18a4/Makefile.kmk
===================================================================
--- src/libs/xpcom18a4/Makefile.kmk	(revision 37995)
+++ src/libs/xpcom18a4/Makefile.kmk	(working copy)
@@ -472,9 +472,11 @@
 	$(libIDL_config_cflags)
  xpidl_LDFLAGS = \
 	$(libIDL_config_libs)
- xpidl_LDFLAGS.linux = \
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+ xpidl_LDFLAGS += \
 	$(VBOX_LD_as_needed)
 endif
+endif
 
 #
 # The XPT linker.
@@ -510,8 +512,8 @@
 	_PR_PTHREADS
 ## @todo filling in the missing stuff, please don't just copy it from linux.
 # FIXME: LINUX should be defined by _linux.cfg
-VBox-xpcom-nspr_DEFS.linux = \
-	LINUX=1 \
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBox-xpcom-nspr_DEFS      += \
 	_POSIX_SOURCE=1 \
 	_BSD_SOURCE=1 \
 	_SVID_SOURCE=1 \
@@ -520,6 +522,7 @@
 	HAVE_FCNTL_FILE_LOCKING=1 \
 	HAVE_CVAR_BUILT_ON_SEM \
 	_PR_PTHREADS
+endif
 # _BSD_SOURCE is here to keep the Glibc header files happy and make them include the right things
 # FIXME: L4 should be defined by _linux.cfg
 VBox-xpcom-nspr_DEFS.l4 = \
@@ -604,7 +607,7 @@
 	nsprpub/lib/libc/src/plerror.c \
 	nsprpub/lib/libc/src/plgetopt.c
 
-ifeq ($(filter-out darwin freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # unixish
+ifeq ($(filter-out darwin freebsd linux gnukfreebsd netbsd openbsd solaris,$(KBUILD_TARGET)),) # unixish
 VBox-xpcom-nspr_SOURCES += \
 	nsprpub/pr/src/md/unix/unix.c \
 	nsprpub/pr/src/md/unix/unix_errors.c \
@@ -647,9 +650,11 @@
 VBox-xpcom-nspr_SOURCES.l4.x86 = nsprpub/pr/src/md/unix/os_Linux_x86.s
 VBox-xpcom-nspr_SOURCES.l4.amd64 = nsprpub/pr/src/md/unix/os_Linux_x86_64.s
 
-VBox-xpcom-nspr_SOURCES.linux = nsprpub/pr/src/md/unix/linux.c
-VBox-xpcom-nspr_SOURCES.linux.x86 = nsprpub/pr/src/md/unix/os_Linux_x86.s
-VBox-xpcom-nspr_SOURCES.linux.amd64 = nsprpub/pr/src/md/unix/os_Linux_x86_64.s
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBox-xpcom-nspr_SOURCES += nsprpub/pr/src/md/unix/linux.c
+VBox-xpcom-nspr_SOURCES.x86 += nsprpub/pr/src/md/unix/os_Linux_x86.s
+VBox-xpcom-nspr_SOURCES.amd64 += nsprpub/pr/src/md/unix/os_Linux_x86_64.s
+endif
 
 VBox-xpcom-nspr_SOURCES.os2 = \
 	nsprpub/pr/src/io/prdir.c \
@@ -813,7 +818,7 @@
 	xpcom/MoreFiles/MoreFilesX.c
 VBox-xpcom-io_SOURCES.l4 = \
 	xpcom/io/nsLocalFileL4.cpp
-if1of ($(KBUILD_TARGET) $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), freebsd linux netbsd openbsd solaris darwin.amd64)
+if1of ($(KBUILD_TARGET) $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), freebsd linux gnukfreebsd netbsd openbsd solaris darwin.amd64)
 VBox-xpcom-io_SOURCES += \
 	xpcom/io/nsLocalFileUnix.cpp
 endif
@@ -877,10 +882,12 @@
                                          xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp
 VBox-xpcom-xptcall_SOURCES.freebsd.amd64=xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp \
                                          xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
-VBox-xpcom-xptcall_SOURCES.linux.x86   = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_gcc_x86_unix.cpp \
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBox-xpcom-xptcall_SOURCES.x86        += xpcom/reflect/xptcall/src/md/unix/xptcinvoke_gcc_x86_unix.cpp \
                                          xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp
-VBox-xpcom-xptcall_SOURCES.linux.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp \
+VBox-xpcom-xptcall_SOURCES.amd64      += xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp \
                                          xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
+endif
 VBox-xpcom-xptcall_SOURCES.os2         = xpcom/reflect/xptcall/src/md/os2/xptcinvoke_gcc_x86_os2.cpp \
                                          xpcom/reflect/xptcall/src/md/os2/xptcstubs_gcc_x86_os2.cpp
 VBox-xpcom-xptcall_SOURCES.solaris.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_solaris.cpp \
@@ -957,8 +964,10 @@
 VBoxXPCOM_NAME = $(basename $(notdir $(LIB_XPCOM)))
 VBoxXPCOM_DEFS = BUILD_DCONNECT="1" _IMPL_NS_COM
 ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
- VBoxXPCOM_LDFLAGS.linux    = -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP)
- VBoxXPCOM_LNK_DEPS.linux  += $(XPCOM_C_NAMESPACE_MAP)
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+ VBoxXPCOM_LDFLAGS         += -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP)
+ VBoxXPCOM_LNK_DEPS        += $(XPCOM_C_NAMESPACE_MAP)
+endif
  VBoxXPCOM_LDFLAGS.solaris  = -Wl,-M,$(XPCOM_C_NAMESPACE_MAP)
  VBoxXPCOM_LNK_DEPS.solaris+= $(XPCOM_C_NAMESPACE_MAP)
 endif
@@ -984,10 +993,12 @@
 	$(VBox-xpcom-proxy_1_TARGET) \
 	$(VBox-xpcom-nspr_1_TARGET) \
 	$(VBoxXPCOMGlue_s_1_TARGET)
-VBoxXPCOM_LIBS.linux = \
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxXPCOM_LIBS += \
 	pthread dl
+endif
 
-ifeq ($(filter-out freebsd l4 linux netbsd openbsd,$(KBUILD_TARGET)),) # gnu ld.
+ifeq ($(filter-out freebsd l4 linux gnukfreebsd netbsd openbsd,$(KBUILD_TARGET)),) # gnu ld.
 VBoxXPCOM_LDFLAGS = -Wl,--whole-archive \
 	$(VBox-xpcom-typelib_1_TARGET) \
 	$(VBox-xpcom-string_1_TARGET) \
Index: src/VBox/HostServices/auth/Makefile.kmk
===================================================================
--- src/VBox/HostServices/auth/Makefile.kmk	(revision 37995)
+++ src/VBox/HostServices/auth/Makefile.kmk	(working copy)
@@ -20,17 +20,21 @@
 
 # The plugin.
 ifndef VBOX_ONLY_SDK
- if ("$(KBUILD_TARGET)" != "linux" && "$(KBUILD_TARGET)" != "solaris") || defined(VBOX_WITH_PAM)
+ if ("$(KBUILD_TARGET)" != "linux" && "$(KBUILD_TARGET)" != "solaris" && "$(KBUILD_TARGET)" != "gnukfreebsd") || defined(VBOX_WITH_PAM)
   DLLS += VBoxAuth
  endif
 endif
 VBoxAuth_TEMPLATE = VBOXR3
-VBoxAuth_SOURCES.linux = pam/VBoxAuthPAM.c
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxAuth_SOURCES += pam/VBoxAuthPAM.c
+endif
 VBoxAuth_SOURCES.solaris = pam/VBoxAuthPAM.c
 VBoxAuth_SOURCES.freebsd = pam/VBoxAuthPAM.c
 VBoxAuth_SOURCES.win = winlogon/winlogon.cpp
 VBoxAuth_SOURCES.darwin = directoryservice/directoryservice.cpp
-VBoxAuth_LIBS.linux = $(LIB_RUNTIME) dl
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxAuth_LIBS += $(LIB_RUNTIME) dl
+endif
 VBoxAuth_LIBS.solaris = $(LIB_RUNTIME) dl
 VBoxAuth_LIBS.freebsd = $(LIB_RUNTIME)
 VBoxAuth_LIBS.darwin = $(LIB_RUNTIME)
@@ -50,7 +54,9 @@
 VBoxAuth-samples_INST = $(INST_SDK)/bindings/auth/
 VBoxAuth-samples_MODE = a+r,u+w
 VBoxAuth-samples_SOURCES = simple/VBoxAuthSimple.cpp
-VBoxAuth-samples_SOURCES.linux = pam/VBoxAuthPAM.c
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxAuth-samples_SOURCES += pam/VBoxAuthPAM.c
+endif
 VBoxAuth-samples_SOURCES.win = winlogon/winlogon.cpp
 
 # Install the SDK header.
Index: src/VBox/HostServices/SharedClipboard/Makefile.kmk
===================================================================
--- src/VBox/HostServices/SharedClipboard/Makefile.kmk	(revision 37995)
+++ src/VBox/HostServices/SharedClipboard/Makefile.kmk	(working copy)
@@ -38,7 +38,7 @@
 	darwin.cpp \
 	$(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-helper.cpp \
 	darwin-pasteboard.cpp
-if1of ($(KBUILD_TARGET), linux solaris freebsd) ## @todo X11
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd) ## @todo X11
  ifndef VBOX_HEADLESS
   VBoxSharedClipboard_SOURCES += \
   	$(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-helper.cpp \
@@ -54,7 +54,7 @@
 	$(LIB_VMM) \
 	$(LIB_RUNTIME) \
 	$(LIB_REM)
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  ifndef VBOX_HEADLESS
   VBoxSharedClipboard_LIBPATH = \
 	$(VBOX_LIBPATH_X11)
@@ -68,7 +68,7 @@
 	-framework ApplicationServices -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxSharedClipboard.dylib
 
 if defined(VBOX_WITH_TESTCASES) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_SDK)
- if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
+ if1of ($(KBUILD_TARGET), freebsd linux gnukfreebsd netbsd openbsd solaris)
  #
  # Set this in LocalConfig.kmk if you are working on the X11 clipboard service
  # to automatically run the unit test at build time.
@@ -84,7 +84,7 @@
 $$(tstClipboardX11-2_0_OUTDIR)/tstClipboardX11-2.run: $$(INSTARGET_tstClipboardX11-2)
 	export VBOX_LOG_DEST=nofile; $(INSTARGET_tstClipboardX11-2) quiet
 	$(QUIET)$(APPEND) -t "$@" "done"
- endif # 1of ($(KBUILD_TARGET),freebsd linux netbsd openbsd solaris)
+ endif # 1of ($(KBUILD_TARGET),freebsd linux gnukfreebsd netbsd openbsd solaris)
 endif
 
 include $(KBUILD_PATH)/subfooter.kmk
Index: src/VBox/HostServices/SharedOpenGL/Makefile.kmk
===================================================================
--- src/VBox/HostServices/SharedOpenGL/Makefile.kmk	(revision 37995)
+++ src/VBox/HostServices/SharedOpenGL/Makefile.kmk	(working copy)
@@ -245,9 +245,9 @@
 	render/renderspu_config.c \
 	render/renderspu_init.c
 VBoxOGLrenderspu_SOURCES.win     = render/renderspu_wgl.c render/render.def
-VBoxOGLrenderspu_SOURCES.linux   = render/renderspu_glx.c
-VBoxOGLrenderspu_SOURCES.solaris = render/renderspu_glx.c
-VBoxOGLrenderspu_SOURCES.freebsd = render/renderspu_glx.c
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
+VBoxOGLrenderspu_SOURCES += render/renderspu_glx.c
+endif
 ifdef VBOX_WITH_COCOA_QT
  VBoxOGLrenderspu_OBJCFLAGS.darwin = -Wno-shadow
  VBoxOGLrenderspu_SOURCES.darwin = \
@@ -261,7 +261,7 @@
 	$(PATH_LIB)/VBoxOGLhostspuload$(VBOX_SUFF_LIB) \
 	$(VBOX_LIB_OGL_HOSTCRUTIL) \
 	$(LIB_RUNTIME)
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # the X11 gang
+if1of ($(KBUILD_TARGET), freebsd linux gnukfreebsd netbsd openbsd solaris) # the X11 gang
  VBoxOGLrenderspu_LIBS += \
 	Xmu \
 	X11 \
Index: src/VBox/HostServices/Makefile.kmk
===================================================================
--- src/VBox/HostServices/Makefile.kmk	(revision 37995)
+++ src/VBox/HostServices/Makefile.kmk	(working copy)
@@ -23,12 +23,12 @@
 ifdef VBOX_WITH_SHARED_FOLDERS
  include $(PATH_SUB_CURRENT)/SharedFolders/Makefile.kmk
 endif
-if1of ($(KBUILD_TARGET), win linux solaris darwin freebsd)
+if1of ($(KBUILD_TARGET), win linux solaris darwin freebsd gnukfreebsd)
  ifdef VBOX_WITH_CROGL
   include $(PATH_SUB_CURRENT)/SharedOpenGL/Makefile.kmk
  endif
 endif
-if1of ($(KBUILD_TARGET), win linux solaris darwin freebsd)
+if1of ($(KBUILD_TARGET), win linux solaris darwin freebsd gnukfreebsd)
  ifdef VBOX_WITH_SHARED_CLIPBOARD
   include $(PATH_SUB_CURRENT)/SharedClipboard/Makefile.kmk
  endif
Index: src/VBox/Devices/Makefile.kmk
===================================================================
--- src/VBox/Devices/Makefile.kmk	(revision 37995)
+++ src/VBox/Devices/Makefile.kmk	(working copy)
@@ -98,8 +98,9 @@
   endif
  endif
 
- VBoxDDU_LDFLAGS.linux    = -Wl,--no-undefined
- VBoxDDU_LDFLAGS.l4       = -Wl,--no-undefined
+ if1of ($(KBUILD_TARGET), linux l4 gnukfreebsd)
+  VBoxDDU_LDFLAGS        += -Wl,--no-undefined
+ endif
 
  #
  # VBoxDDULnxHostR3 (Only needed for l4, currently for executing vditool on L4Linux.)
@@ -223,8 +224,9 @@
  	-framework IOKit \
  	-framework Carbon \
  	-framework DiskArbitration
- VBoxDD_LDFLAGS.linux    = -Wl,--no-undefined
- VBoxDD_LDFLAGS.l4       = -Wl,--no-undefined
+ if1of ($(KBUILD_TARGET), linux l4 gnukfreebsd)
+  VBoxDD_LDFLAGS        += -Wl,--no-undefined
+ endif
 
 
  #
@@ -253,8 +255,9 @@
  endif
  VBoxDD2_LIBS.darwin    += $(LIB_REM)
  VBoxDD2_LDFLAGS.darwin  = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD2.dylib
- VBoxDD2_LDFLAGS.linux   = -Wl,--no-undefined
- VBoxDD2_LDFLAGS.l4      = -Wl,--no-undefined
+ if1of ($(KBUILD_TARGET), linux l4 gnukfreebsd)
+  VBoxDD2_LDFLAGS       += -Wl,--no-undefined
+ endif
 
  ifdef VBOX_WITH_PXE_ROM
   VBoxDD2_DEFS          += VBOX_WITH_PXE_ROM
@@ -271,8 +274,9 @@
  	VBOX_WITH_HGCM \
  	$(if $(VBOX_BIOS_DMI_FALLBACK),VBOX_BIOS_DMI_FALLBACK,)
 
- DevicesR3_DEFS.linux   += _GNU_SOURCE
- DevicesR3_DEFS.l4      += _GNU_SOURCE
+ if1of ($(KBUILD_TARGET), linux l4 gnukfreebsd)
+  DevicesR3_DEFS        += _GNU_SOURCE
+ endif
 
  DevicesR3_INCS          = \
  	build
@@ -958,13 +962,12 @@
  	Serial/DrvHostSerial.cpp
  endif # darwin
 
- ifeq ($(KBUILD_TARGET),freebsd)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
  Drivers_SOURCES      := $(filter-out \
  	Storage/DrvHostFloppy% \
  	, $(Drivers_SOURCES)) \
  	Audio/ossaudio.c \
- 	Serial/DrvHostSerial.cpp
- Drivers_SOURCES.freebsd = \
+ 	Serial/DrvHostSerial.cpp \
  	Network/DrvTAP.cpp
  endif # freebsd
 
@@ -1054,14 +1057,12 @@
  endif
 
  ifdef VBOX_WITH_PULSE
-  Drivers_DEFS.linux   += VBOX_WITH_PULSE
-  Drivers_SOURCES.linux+= \
+  if1of ($(KBUILD_TARGET), linux freebsd gnukfreebsd)
+   Drivers_DEFS        += VBOX_WITH_PULSE
+   Drivers_SOURCES     += \
  	Audio/pulseaudio.c \
  	Audio/pulse_stubs.c
-  Drivers_DEFS.freebsd += VBOX_WITH_PULSE
-  Drivers_SOURCES.freebsd+= \
- 	Audio/pulseaudio.c \
- 	Audio/pulse_stubs.c
+  endif
  endif
 
  ifdef VBOX_WITH_VUSB
@@ -1117,10 +1118,12 @@
  	USB/USBProxyDevice.cpp \
  	USB/solaris/USBProxyDevice-solaris.cpp
 
-  Drivers_DEFS.freebsd      += VUSB_HAVE_USBPROXY_DEVICE
-  Drivers_SOURCES.freebsd   += \
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+   Drivers_DEFS           += VUSB_HAVE_USBPROXY_DEVICE
+   Drivers_SOURCES        += \
  	USB/USBProxyDevice.cpp \
  	USB/freebsd/USBProxyDevice-freebsd.cpp
+  endif
 
   ifdef VBOX_WITH_SCSI
    Drivers_SOURCES += \
Index: src/VBox/Devices/PC/Etherboot-src/Makefile.kmk
===================================================================
--- src/VBox/Devices/PC/Etherboot-src/Makefile.kmk	(revision 37995)
+++ src/VBox/Devices/PC/Etherboot-src/Makefile.kmk	(working copy)
@@ -18,7 +18,7 @@
 SUB_DEPTH = ../../../../..
 include $(KBUILD_PATH)/subheader.kmk
 
-if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.x86 darwin.amd64 os2.x86 solaris.x86 solaris.amd64 win.x86 win.amd64 linux.amd64 freebsd.amd64)
+if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.x86 darwin.amd64 os2.x86 solaris.x86 solaris.amd64 win.x86 win.amd64 linux.amd64 freebsd.amd64 gnukfreebsd.amd64)
  #
  # Build it from a precompiled binary.
  # See notes about the binary load address and size way below.
Index: src/VBox/Runtime/Makefile.kmk
===================================================================
--- src/VBox/Runtime/Makefile.kmk	(revision 37995)
+++ src/VBox/Runtime/Makefile.kmk	(working copy)
@@ -514,7 +514,7 @@
 RuntimeR3_SOURCES += \
 	common/err/errmsgxpcom.cpp
 endif
-if1of ($(KBUILD_TARGET),freebsd linux netbsd openbsd solaris)
+if1of ($(KBUILD_TARGET),freebsd gnukfreebsd linux netbsd openbsd solaris)
 RuntimeR3_SOURCES += \
 	$(if $(VBOX_WITH_DBUS),VBox/dbus.cpp,)
 endif
@@ -662,6 +662,62 @@
  endif
 endif
 
+RuntimeR3_SOURCES.gnukfreebsd = \
+	generic/RTDirQueryInfo-generic.cpp \
+	generic/RTDirSetTimes-generic.cpp \
+	generic/RTFileMove-generic.cpp \
+	generic/RTLogWriteDebugger-generic.cpp \
+	generic/RTProcDaemonize-generic.cpp \
+ 	generic/RTSemEventMultiWait-2-ex-generic.cpp \
+ 	generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
+	generic/RTSystemQueryDmiString-generic.cpp \
+	generic/RTTimeLocalNow-generic.cpp \
+	generic/RTTimerCreate-generic.cpp \
+	generic/RTUuidCreate-generic.cpp \
+	generic/mppresent-generic.cpp \
+	generic/sched-generic.cpp \
+	generic/utf16locale-generic.cpp \
+	generic/uuid-generic.cpp \
+	r3/freebsd/mp-freebsd.cpp \
+	r3/freebsd/rtProcInitExePath-freebsd.cpp \
+	r3/posix/RTFileQueryFsSizes-posix.cpp \
+	r3/posix/RTHandleGetStandard-posix.cpp \
+	r3/posix/RTMemProtect-posix.cpp \
+	r3/posix/RTPathUserHome-posix.cpp \
+	r3/posix/RTSystemQueryOSInfo-posix.cpp \
+	r3/posix/RTSystemQueryTotalRam-posix.cpp \
+	r3/posix/RTTimeNow-posix.cpp \
+	r3/posix/RTTimeSet-posix.cpp \
+	r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
+	r3/posix/dir-posix.cpp \
+	r3/posix/env-posix.cpp \
+	r3/posix/fileio-posix.cpp \
+	r3/posix/fileio2-posix.cpp \
+	r3/posix/filelock-posix.cpp \
+	r3/posix/fs-posix.cpp \
+	r3/posix/fs2-posix.cpp \
+	r3/posix/fs3-posix.cpp \
+	r3/posix/ldrNative-posix.cpp \
+	r3/posix/path-posix.cpp \
+	r3/posix/path2-posix.cpp \
+	r3/posix/pathhost-posix.cpp \
+	r3/posix/pipe-posix.cpp \
+	r3/posix/poll-posix.cpp \
+	r3/posix/process-posix.cpp \
+	r3/posix/process-creation-posix.cpp \
+	r3/posix/rand-posix.cpp \
+	r3/posix/semrw-posix.cpp \
+	r3/posix/symlink-posix.cpp \
+	r3/posix/thread-posix.cpp \
+	r3/posix/time-posix.cpp \
+	r3/posix/timelocal-posix.cpp \
+	r3/posix/timer-posix.cpp \
+	r3/posix/tls-posix.cpp \
+	r3/posix/utf8-posix.cpp \
+ 	r3/posix/semevent-posix.cpp \
+ 	r3/posix/semeventmulti-posix.cpp \
+ 	r3/posix/semmutex-posix.cpp
+
 RuntimeR3_SOURCES.os2   = \
 	generic/RTDirQueryInfo-generic.cpp \
 	generic/RTDirSetTimes-generic.cpp \
@@ -1153,7 +1209,8 @@
 	r3/alloc-ef.cpp \
 	r3/fileio.cpp \
 	r3/fs.cpp
-RuntimeGuestR3Mini_SOURCES.freebsd = \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+RuntimeGuestR3Mini_SOURCES += \
 	r3/posix/RTMemProtect-posix.cpp \
 	r3/posix/rtmempage-exec-mmap-posix.cpp \
 	r3/posix/RTPathUserHome-posix.cpp \
@@ -1165,6 +1222,7 @@
 	r3/posix/utf8-posix.cpp \
 	r3/posix/thread2-posix.cpp \
 	common/err/errmsgxpcom.cpp
+endif
 RuntimeGuestR3Mini_SOURCES.linux = \
 	r3/posix/RTMemProtect-posix.cpp \
 	r3/posix/rtmempage-exec-mmap-posix.cpp \
@@ -1258,8 +1316,10 @@
 	r3/solaris/fileaio-solaris.cpp
 VBoxRT_SOURCES.darwin         += \
 	r3/posix/fileaio-posix.cpp
-VBoxRT_SOURCES.freebsd        += \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+VBoxRT_SOURCES                += \
 	r3/freebsd/fileaio-freebsd.cpp
+endif
 VBoxRT_INCS                    = $(RuntimeR3_INCS)
 VBoxRT_INCS.$(KBUILD_TARGET)   = $(RuntimeR3_INCS.$(KBUILD_TARGET))
 VBoxRT_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = $(RuntimeR3_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
@@ -1286,8 +1346,10 @@
 ifdef IPRT_WITH_LZO
  VBoxRT_LIBS                  += lzo2
 endif
-VBoxRT_LIBS.linux              = \
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxRT_LIBS                   += \
 	crypt
+endif
 VBoxRT_LIBS.darwin             = \
 	iconv
 VBoxRT_LIBS.freebsd            = \
@@ -1564,8 +1626,10 @@
 RuntimeR0Drv_DEFS.linux = MODULE KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) IN_SUP_R0
 
 RuntimeR0Drv_INCS      := $(PATH_SUB_CURRENT) include
-RuntimeR0Drv_INCS.freebsd = \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+RuntimeR0Drv_INCS      += \
 	$(PATH_INS)/gen-sys-hdrs
+endif
 RuntimeR0Drv_INCS.linux = \
 	r0drv/linux
 RuntimeR0Drv_INCS.solaris = \
@@ -1827,7 +1891,8 @@
 	r0drv/os2/timer-r0drv-os2.cpp \
 	r0drv/os2/timerA-r0drv-os2.asm
 
-RuntimeR0Drv_SOURCES.freebsd = \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+RuntimeR0Drv_SOURCES += \
 	common/err/RTErrConvertFromErrno.cpp \
 	common/err/RTErrConvertToErrno.cpp \
 	common/misc/thread.cpp \
@@ -1861,6 +1926,7 @@
 	generic/timer-generic.cpp \
 	r0drv/memobj-r0drv.cpp \
 	r0drv/powernotification-r0drv.c
+endif
 
 RuntimeR0Drv_SOURCES.solaris = \
 	common/err/RTErrConvertFromErrno.cpp \
@@ -1901,11 +1967,12 @@
 
 ## PORTME: Porters create and add their selection of platform specific Ring-0 Driver files here.
 
-RuntimeR0Drv_ORDERDEPS.freebsd = \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+RuntimeR0Drv_ORDERDEPS += \
   	$(PATH_INS)/gen-sys-hdrs/bus_if.h \
   	$(PATH_INS)/gen-sys-hdrs/device_if.h
+endif
 
-
 #
 # RuntimeGuestR0 - Guest driver runtime.
 #                  This is almost the same as the RuntimeR0Drv, the main difference
@@ -2115,7 +2182,7 @@
 	$(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(filter %.xidl,$^)
 
 
-if "$(KBUILD_TARGET)" == "freebsd"
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
 #
 # FreeBSDGeneratedKernelHeaders - Generate some kernel interface headers.
 #
Index: src/VBox/Main/Makefile.kmk
===================================================================
--- src/VBox/Main/Makefile.kmk	(revision 37995)
+++ src/VBox/Main/Makefile.kmk	(working copy)
@@ -242,6 +242,7 @@
 # VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
 VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
 VBoxSVC_DEFS.freebsd += VBOX_USE_LIBHAL
+VBoxSVC_DEFS.gnukfreebsd += VBOX_USE_LIBHAL
 
 VBoxSVC_CXXFLAGS = $(filter-out -Wno-unused,$(TEMPLATE_VBOXMAINEXE_CXXFLAGS))
 
@@ -260,6 +261,8 @@
 VBoxSVC_LIBS += \
 	$(PATH_LIB)/SSMStandalone$(VBOX_SUFF_LIB) \
 	$(LIB_DDU)
+VBoxSVC_LIBS.gnukfreebsd = \
+	bsd
 VBoxSVC_SDKS = VBOX_LIBPNG VBOX_ZLIB
 VBoxSVC_LIBS.solaris = \
 	adm \
@@ -351,8 +354,10 @@
 	src-server/linux/vbox-libhal.cpp \
 	src-server/solaris/DynLoadLibSolaris.cpp
 
-VBoxSVC_SOURCES.freebsd = \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+VBoxSVC_SOURCES += \
 	src-server/freebsd/HostHardwareFreeBSD.cpp
+endif
 
 src-server/Logging.cpp_DEFS = \
 	VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\" \
@@ -373,8 +378,10 @@
  VBoxSVC_SOURCES.os2     +=     src-server/os2/USBProxyServiceOs2.cpp
  VBoxSVC_SOURCES.solaris += src-server/solaris/USBProxyServiceSolaris.cpp
  VBoxSVC_SOURCES.win     +=     src-server/win/USBProxyServiceWindows.cpp
- VBoxSVC_SOURCES.freebsd += src-server/freebsd/USBProxyServiceFreeBSD.cpp
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+ VBoxSVC_SOURCES         += src-server/freebsd/USBProxyServiceFreeBSD.cpp
 endif
+endif
 
 ifdef VBOX_WITH_NETFLT
  # Note! The includes from the TOOL has lower priority than the SDKs,
@@ -396,15 +403,19 @@
 endif
 
 ifeq ($(KBUILD_TYPE),debug)
- VBoxSVC_LDFLAGS.linux   += -rdynamic # for backtrace_symbols()
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+ VBoxSVC_LDFLAGS         += -rdynamic # for backtrace_symbols()
 endif
+endif
 
 ifdef VBOX_WITH_RESOURCE_USAGE_API
  VBoxSVC_SOURCES += \
 	src-server/PerformanceImpl.cpp \
 	src-server/Performance.cpp
  VBoxSVC_SOURCES.darwin  +=  src-server/darwin/PerformanceDarwin.cpp
- VBoxSVC_SOURCES.freebsd += src-server/freebsd/PerformanceFreeBSD.cpp
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+ VBoxSVC_SOURCES         += src-server/freebsd/PerformanceFreeBSD.cpp
+endif
  VBoxSVC_SOURCES.linux   +=   src-server/linux/PerformanceLinux.cpp
  VBoxSVC_SOURCES.os2     +=     src-server/os2/PerformanceOs2.cpp
  VBoxSVC_SOURCES.solaris += src-server/solaris/PerformanceSolaris.cpp
@@ -420,9 +431,11 @@
  VBoxSVC_SOURCES.os2     +=     src-server/os2/NetIf-os2.cpp
  VBoxSVC_SOURCES.darwin  +=  src-server/darwin/NetIf-darwin.cpp
  VBoxSVC_SOURCES.solaris += src-server/solaris/NetIf-solaris.cpp
- VBoxSVC_SOURCES.freebsd += src-server/freebsd/NetIf-freebsd.cpp
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+ VBoxSVC_SOURCES         += src-server/freebsd/NetIf-freebsd.cpp
+endif
  VBoxSVC_DEFS            += VBOX_WITH_HOSTNETIF_API
- if1of ($(KBUILD_TARGET), linux darwin solaris freebsd)
+ if1of ($(KBUILD_TARGET), linux darwin solaris gnukfreebsd)
   VBoxSVC_SOURCES        += src-server/generic/NetIf-generic.cpp
  endif
 endif
@@ -445,6 +458,7 @@
 VBOX_XML_SCHEMA.darwin        = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-macosx.xsd
 VBOX_XML_SCHEMA.linux         = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-linux.xsd
 VBOX_XML_SCHEMA.freebsd       = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-freebsd.xsd
+VBOX_XML_SCHEMA.gnukfreebsd   = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-freebsd.xsd
 VBOX_XML_SCHEMA.win           = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-windows.xsd
 VBOX_XML_SCHEMA.os2           = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-os2.xsd
 VBOX_XML_SCHEMA.solaris       = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-solaris.xsd
@@ -517,7 +531,7 @@
    VBoxTestOGL_QT_MODULES += Core Gui OpenGL
    VBoxTestOGL_LDFLAGS.darwin += -framework OpenGL
    VBoxTestOGL_LIBS.win += $(PATH_SDK_WINPSDK_LIB)/Opengl32.lib
-   if1of ($(KBUILD_TARGET), solaris linux freebsd)
+   if1of ($(KBUILD_TARGET), solaris linux freebsd gnukfreebsd)
     # must come after VBoxOGL2D, therefore don't set the arch-specific LIBS variable here!
     VBoxTestOGL_LIBS += GL
    endif
Index: src/VBox/GuestHost/OpenGL/Makefile.kmk
===================================================================
--- src/VBox/GuestHost/OpenGL/Makefile.kmk	(revision 37995)
+++ src/VBox/GuestHost/OpenGL/Makefile.kmk	(working copy)
@@ -45,7 +45,7 @@
 endif
 VBoxOGLcrutil_SDKS.win      = DXSDK
 VBoxOGLcrutil_INTERMEDIATES = $(VBOX_PATH_CROGL_GENFILES)/cr_opcodes.h
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLcrutil_INCS += \
 	$(VBOX_MESA_INCS)
 endif
@@ -155,7 +155,7 @@
 VBoxOGLcrpacker_TEMPLATE = VBOXCROGLR3GUESTLIB
 VBoxOGLcrpacker_INCS = \
 	packer
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLcrpacker_INCS += \
 	$(VBOX_MESA_INCS)
 endif
@@ -300,7 +300,7 @@
 VBoxOGLspuload_TEMPLATE = VBOXCROGLR3GUESTLIB
 VBoxOGLspuload_INTERMEDIATES = \
 	$(VBOX_PATH_CROGL_GENFILES)/spu_dispatch_table.h
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLspuload_INCS += \
 	$(VBOX_MESA_INCS)
 endif
@@ -368,7 +368,7 @@
 VBoxOGLcrstate_TEMPLATE = VBOXCROGLR3GUESTLIB
 VBoxOGLcrstate_INCS = \
 	state_tracker
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLcrstate_INCS += \
 	$(VBOX_MESA_INCS)
 endif
@@ -555,7 +555,7 @@
 endif
 VBoxOGLerrorspu_INTERMEDIATES = \
 	$(VBOX_PATH_CROGL_GENFILES)/spu_dispatch_table.h
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLerrorspu_INCS += \
 	$(VBOX_MESA_INCS)
 endif
Index: src/VBox/GuestHost/SharedClipboard/Makefile.kmk
===================================================================
--- src/VBox/GuestHost/SharedClipboard/Makefile.kmk	(revision 37995)
+++ src/VBox/GuestHost/SharedClipboard/Makefile.kmk	(working copy)
@@ -19,7 +19,7 @@
 include $(KBUILD_PATH)/subheader.kmk
 
 if defined(VBOX_WITH_TESTCASES) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_SDK)
- if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux netbsd openbsd solaris)
   #
   # Set these in LocalConfig.kmk if you are working on the X11 clipboard service
   # to automatically run the unit tests at build time:
Index: src/VBox/Installer/linux/Makefile.kmk
===================================================================
--- src/VBox/Installer/linux/Makefile.kmk	(revision 37995)
+++ src/VBox/Installer/linux/Makefile.kmk	(working copy)
@@ -23,7 +23,7 @@
  include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
 endif
 
-ifneq ($(KBUILD_HOST),linux)
+ifneq ($(KBUILD_HOST),$(KBUILD_TARGET))
  $(error "The Linux installer can only be built on Linux!")
 endif
 
Index: src/VBox/Installer/Makefile.kmk
===================================================================
--- src/VBox/Installer/Makefile.kmk	(revision 37995)
+++ src/VBox/Installer/Makefile.kmk	(working copy)
@@ -28,6 +28,9 @@
  if "$(KBUILD_TARGET)" == "linux" && "$(KBUILD_HOST)" == "linux"
   include $(PATH_SUB_CURRENT)/linux/Makefile.kmk
  endif
+ if "$(KBUILD_TARGET)" == "gnukfreebsd" && "$(KBUILD_HOST)" == "gnukfreebsd"
+  include $(PATH_SUB_CURRENT)/linux/Makefile.kmk
+ endif
  if "$(KBUILD_TARGET)" == "solaris" && "$(KBUILD_HOST)" == "solaris"
   include $(PATH_SUB_CURRENT)/solaris/Makefile.kmk
  endif
Index: src/VBox/Makefile.kmk
===================================================================
--- src/VBox/Makefile.kmk	(revision 37995)
+++ src/VBox/Makefile.kmk	(working copy)
@@ -22,7 +22,7 @@
 ifdef VBOX_ONLY_ADDITIONS
  include $(PATH_SUB_CURRENT)/Runtime/Makefile.kmk
  ifdef VBOX_WITH_CROGL
-  if1of ($(KBUILD_TARGET),win linux solaris freebsd)
+  if1of ($(KBUILD_TARGET),win linux gnukfreebsd solaris freebsd)
    include $(PATH_SUB_CURRENT)/GuestHost/Makefile.kmk
   endif
  endif
Index: src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 37995)
+++ src/VBox/Frontends/VirtualBox/Makefile.kmk	(working copy)
@@ -90,7 +90,7 @@
  VirtualBox_INST.darwin = $(INST_BIN)VirtualBox $(INST_BIN)VirtualBoxVM
 endif
 VirtualBox_SDKS.win = WINPSDK DXSDK
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd os2) # X11 + os2 ## @todo solaris
+if1of ($(KBUILD_TARGET), freebsd linux gnukfreebsd netbsd openbsd os2) # X11 + os2 ## @todo solaris
  VirtualBox_SDKS += LIBSDL
 endif
 
@@ -107,6 +107,7 @@
 endif
 VirtualBox_DEFS.freebsd   = VBOX_GUI_USE_QIMAGE VBOX_GUI_USE_SDL
 VirtualBox_DEFS.linux     = VBOX_GUI_USE_QIMAGE VBOX_GUI_USE_SDL
+VirtualBox_DEFS.gnukfreebsd = VBOX_GUI_USE_QIMAGE VBOX_GUI_USE_SDL
 VirtualBox_DEFS.netbsd    = VBOX_GUI_USE_QIMAGE VBOX_GUI_USE_SDL
 VirtualBox_DEFS.openbsd   = VBOX_GUI_USE_QIMAGE VBOX_GUI_USE_SDL
 VirtualBox_DEFS.solaris   = VBOX_GUI_USE_QIMAGE #VBOX_GUI_USE_SDL
@@ -204,9 +205,9 @@
 VirtualBox_LIBS = $(LIB_DDU)
 
 # This library is required for multi-monitor support
-VirtualBox_LIBS.linux += Xinerama
-VirtualBox_LIBS.solaris += Xinerama
-VirtualBox_LIBS.freebsd += Xinerama
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
+VirtualBox_LIBS += Xinerama
+endif
 
 ifneq ($(KBUILD_TARGET),win)
 VirtualBox_CXXFLAGS += -Wno-switch
@@ -219,7 +220,9 @@
 ifeq ($(KBUILD_TYPE),release)
  VirtualBox_LDFLAGS.win  += /SUBSYSTEM:windows
 else
- VirtualBox_LDFLAGS.linux+= -rdynamic # for backtrace_symbols()
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+ VirtualBox_LDFLAGS      += -rdynamic # for backtrace_symbols()
+endif
  ifeq ($(USERNAME),dmik)
   VirtualBox_LDFLAGS.win += /SUBSYSTEM:windows
  else
@@ -250,7 +253,7 @@
 	$(PATH_SDK_WINPSDK_LIB)/Htmlhelp.Lib \
 	$(PATH_SDK_DXSDK_LIB)/ddraw.lib \
 	$(PATH_SDK_DXSDK_LIB)/dxguid.lib
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # X11
+if1of ($(KBUILD_TARGET), freebsd linux gnukfreebsd netbsd openbsd solaris) # X11
  VirtualBox_LIBS         += $(PATH_DLL)/VBoxKeyboard$(VBOX_SUFF_DLL)
 endif
 
@@ -259,6 +262,7 @@
  VirtualBox_LIBS.solaris += GL
  VirtualBox_LIBS.linux   += GL
  VirtualBox_LIBS.freebsd += GL
+ VirtualBox_LIBS.gnukfreebsd += GL
 endif
 
 # Headers containing definitions of classes that use the Q_OBJECT macro.
@@ -573,7 +577,7 @@
 	src/platform/darwin/UIWindowMenuManager.cpp \
 	src/platform/darwin/UICocoaDockIconPreview.mm
 
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # X11
+if1of ($(KBUILD_TARGET), freebsd linux gnukfreebsd netbsd openbsd solaris) # X11
  VirtualBox_SOURCES += \
  	src/platform/x11/XKeyboard-new.cpp \
  	src/platform/x11/VBoxX11Helper.cpp \
@@ -948,7 +952,7 @@
 # App for testing GL support
 #
 if defined(VBOX_WITH_VIDEOHWACCEL)
- if1of ($(KBUILD_TARGET), win linux freebsd)
+ if1of ($(KBUILD_TARGET), win linux freebsd gnukfreebsd)
   LIBRARIES += VBoxOGL2D
   VBoxOGL2D_TEMPLATE = VBOXR3STATIC
   VBoxOGL2D_USES = qt4
Index: src/VBox/Frontends/VBoxSDL/Makefile.kmk
===================================================================
--- src/VBox/Frontends/VBoxSDL/Makefile.kmk	(revision 37995)
+++ src/VBox/Frontends/VBoxSDL/Makefile.kmk	(working copy)
@@ -59,9 +59,12 @@
   VBoxSDL_DEFS    += VBOX_SECURELABEL
  endif
 endif
-VBoxSDL_DEFS.freebsd = VBOXSDL_WITH_X11
-VBoxSDL_DEFS.linux = _GNU_SOURCE VBOXSDL_WITH_X11
-VBoxSDL_DEFS.solaris = VBOXSDL_WITH_X11
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxSDL_DEFS      += _GNU_SOURCE
+endif
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux solaris)
+VBoxSDL_DEFS      += VBOXSDL_WITH_X11
+endif
 ifdef VBOX_OPENGL
  #VBoxSDL_DEFS.linux += VBOX_OPENGL
 endif
@@ -70,7 +73,7 @@
 
 VBoxSDL_INCS = \
 	$(VBoxSDL_0_OUTDIR)
-ifeq ($(filter-out freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11
+ifeq ($(filter-out freebsd linux gnukfreebsd netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11
 VBoxSDL_INCS += \
 	$(VBOX_XCURSOR_INCS)
 endif
@@ -79,7 +82,7 @@
 VBoxSDL_LIBS = \
 	$(LIB_SDK_LIBSDL_SDLMAIN)
 endif
-ifeq ($(filter-out freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11
+ifeq ($(filter-out freebsd linux gnukfreebsd netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11
 VBoxSDL_LIBS += \
 	$(PATH_DLL)/VBoxKeyboard$(VBOX_SUFF_DLL) \
 	$(VBOX_XCURSOR_LIBS) \
@@ -136,7 +139,7 @@
 ifdef VBOX_OPENGL
 tstSDL_LIBS.linux += GL
 endif
-ifeq ($(filter-out freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11
+ifeq ($(filter-out freebsd linux gnukfreebsd netbsd openbsd solaris,$(KBUILD_TARGET)),) # X11
 tstSDL_LIBPATH = \
 	$(VBOX_LIBPATH_X11)
 endif
Index: src/VBox/Frontends/Common/VBoxKeyboard/Makefile.kmk
===================================================================
--- src/VBox/Frontends/Common/VBoxKeyboard/Makefile.kmk	(revision 37995)
+++ src/VBox/Frontends/Common/VBoxKeyboard/Makefile.kmk	(working copy)
@@ -18,7 +18,7 @@
 SUB_DEPTH = ../../../../..
 include $(KBUILD_PATH)/subheader.kmk
 
-if1of ($(KBUILD_TARGET), freebsd linux openbsd netbsd solaris) # X11
+if1of ($(KBUILD_TARGET), freebsd linux gnukfreebsd openbsd netbsd solaris) # X11
  DLLS        += VBoxKeyboard
  OTHERS      += $(PATH_BIN)/vboxkeyboard.tar.bz2
  OTHER_CLEAN += $(PATH_BIN)/vboxkeyboard.tar.bz2
Index: src/VBox/Frontends/Common/Makefile.kmk
===================================================================
--- src/VBox/Frontends/Common/Makefile.kmk	(revision 37995)
+++ src/VBox/Frontends/Common/Makefile.kmk	(working copy)
@@ -20,7 +20,7 @@
 
 # Include Sub-Makefiles
 ifneq ($(VBOX_WITH_QTGUI)$(VBOX_WITH_VBOXSDL),)
- ifeq ($(filter-out freebsd linux openbsd netbsd solaris,$(KBUILD_TARGET)),) # X11
+ ifeq ($(filter-out freebsd linux gnukfreebsd openbsd netbsd solaris,$(KBUILD_TARGET)),) # X11
   include $(PATH_SUB_CURRENT)/VBoxKeyboard/Makefile.kmk
  endif
 endif
Index: src/VBox/Frontends/VBoxBFE/Makefile.kmk
===================================================================
--- src/VBox/Frontends/VBoxBFE/Makefile.kmk	(revision 37995)
+++ src/VBox/Frontends/VBoxBFE/Makefile.kmk	(working copy)
@@ -55,9 +55,12 @@
 ifdef VBOX_WITH_LINUX_COMPILER_H
 VBoxBFE_DEFS += VBOX_WITH_LINUX_COMPILER_H
 endif
-VBoxBFE_DEFS.freebsd = VBOXBFE_WITH_X11
-VBoxBFE_DEFS.linux = _GNU_SOURCE VBOXBFE_WITH_X11
-VBoxBFE_DEFS.solaris = VBOXBFE_WITH_X11
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxBFE_DEFS += _GNU_SOURCE
+endif
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux solaris)
+VBoxBFE_DEFS += VBOXBFE_WITH_X11
+endif
 ifdef VBOX_WITH_CROSSBOW
  VBoxBFE_DEFS.solaris += VBOX_WITH_CROSSBOW
 endif
Index: src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
===================================================================
--- src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk	(revision 37995)
+++ src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk	(working copy)
@@ -19,7 +19,7 @@
 include	$(KBUILD_PATH)/subheader.kmk
 
 
-if1of ($(KBUILD_TARGET), solaris darwin linux freebsd)
+if1of ($(KBUILD_TARGET), solaris darwin linux freebsd gnukfreebsd)
 #
 # VBoxNetAdp - Virtual Network Adapter
 # Note! On Solaris the name has to be <= 8 chars long.
@@ -30,7 +30,9 @@
 VBoxNetAdp_INST = $(INST_VBOXNETADP)$(if $(eq $(KBUILD_TARGET),darwin),Contents/MacOS/)
 VBoxNetAdp_NAME.solaris     = vboxnet
 VBoxNetAdp_NAME.linux       = vboxnetadp
-VBoxNetAdp_NAME.freebsd     = vboxnetadp
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+VBoxNetAdp_NAME             = vboxnetadp
+endif
 VBoxNetAdp_NOINST.linux     = true
 VBoxNetAdp_DEPS.solaris    += $(VBOX_SVN_REV_KMK)
 VBoxNetAdp_DEFS             = IN_RT_R0 VBOX_SVN_REV=$(VBOX_SVN_REV) IN_SUP_STATIC
@@ -49,9 +51,11 @@
 VBoxNetAdp_SOURCES.linux   = \
 	linux/VBoxNetAdp-linux.c \
 	VBoxNetAdp.c
-VBoxNetAdp_SOURCES.freebsd   = \
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+VBoxNetAdp_SOURCES        += \
 	freebsd/VBoxNetAdp-freebsd.c \
 	VBoxNetAdp.c
+endif
 VBoxNetAdp_SOURCES          =
 #VBoxNetAdp_SOURCES          = \
 #	VBoxNetAdp.c
@@ -140,7 +144,7 @@
 
 endif # linux
 
-ifeq ($(KBUILD_TARGET),freebsd)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
  #
  # Install source files for compilation on FreeBSD.
  # files_vboxnetadp defines VBOX_VBOXNETADP_SOURCES.
Index: src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
===================================================================
--- src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk	(revision 37995)
+++ src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk	(working copy)
@@ -313,7 +313,7 @@
 
 endif #ifeq ($(KBUILD_TARGET), win)
 
-else if1of ($(KBUILD_TARGET), linux solaris freebsd) ## @todo merge this with the mixed case stuff.
+else if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd) ## @todo merge this with the mixed case stuff.
 #
 # vboxnetflt(.ko/.o/) - The lower case driver.
 # Note! On Solaris the name has to be <= 8 chars long.
@@ -338,7 +338,9 @@
 #	$(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
 vboxnetflt_SOURCES.linux = linux/VBoxNetFlt-linux.c
 vboxnetflt_SOURCES.solaris = solaris/VBoxNetFlt-solaris.c
-vboxnetflt_SOURCES.freebsd = freebsd/VBoxNetFlt-freebsd.c
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+vboxnetflt_SOURCES += freebsd/VBoxNetFlt-freebsd.c
+endif
 vboxnetflt_SOURCES = VBoxNetFlt.c
 solaris/VBoxNetFlt-solaris.c_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
   ifdef VBOX_WITH_NETFLT_CROSSBOW
@@ -409,8 +411,8 @@
 
 # Gross hack for FreeBSD 7, should figure this out properly
 ## @todo Properly generate opt_netgraph.h
-ifeq ($(KBUILD_TARGET),freebsd)
-vboxnetflt_DEPS.freebsd += $(PATH_OUT)/opt_netgraph.h
+if1of ($(KBUILD_TARGET),freebsd gnukfreebsd)
+vboxnetflt_DEPS += $(PATH_OUT)/opt_netgraph.h
 $(PATH_OUT)/opt_netgraph.h:
 	echo > $(PATH_OUT)/opt_netgraph.h
 
Index: src/VBox/HostDrivers/Support/Makefile.kmk
===================================================================
--- src/VBox/HostDrivers/Support/Makefile.kmk	(revision 37995)
+++ src/VBox/HostDrivers/Support/Makefile.kmk	(working copy)
@@ -45,12 +45,14 @@
  ifdef VBOX_WITH_VBOXDRV
   LIBRARIES       += SUPR0IdcClient
   SYSMODS.freebsd += vboxdrv
+  SYSMODS.gnukfreebsd += vboxdrv
   SYSMODS.linux   += vboxdrv
   SYSMODS.win     += VBoxDrv
   SYSMODS.os2     += VBoxDrv
   SYSMODS.solaris += vboxdrv
  endif
  INSTALLS.linux   += vboxdrv-mod vboxdrv-sh vboxdrv-dkms
+ INSTALLS.gnukfreebsd += vboxdrv-mod vboxdrv-sh vboxdrv-dkms
  INSTALLS.freebsd += vboxdrv-mod vboxdrv-sh
 
  #
@@ -64,7 +66,7 @@
  ifeq ($(KBUILD_TARGET),linux)
   include $(PATH_SUB_CURRENT)/linux/files_vboxdrv
  endif
- ifeq ($(KBUILD_TARGET),freebsd)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
   include $(PATH_SUB_CURRENT)/freebsd/files_vboxdrv
  endif
 endif # !VBOX_ONLY_DOCS && !VBOX_ONLY_EXTPACKS && !VBOX_ONLY_TESTSUITE
@@ -89,8 +91,14 @@
 	SUPLib.cpp \
 	SUPLibSem.cpp \
 	SUPR3HardenedIPRT.cpp \
-	SUPR3HardenedVerify.cpp \
+	SUPR3HardenedVerify.cpp
+ifeq ($(KBUILD_TARGET),gnukfreebsd)
+SUPR3_SOURCES      += \
+	freebsd/SUPLib-freebsd.cpp
+else
+SUPR3_SOURCES      += \
 	$(KBUILD_TARGET)/SUPLib-$(KBUILD_TARGET).cpp
+endif
 
 #
 # Static version of SUPR3.
@@ -109,8 +117,14 @@
 SUPR3HardenedStatic_INCS     = .
 SUPR3HardenedStatic_SOURCES  = \
 	SUPR3HardenedMain.cpp \
-	SUPR3HardenedVerify.cpp \
+	SUPR3HardenedVerify.cpp
+ifeq ($(KBUILD_TARGET),gnukfreebsd)
+SUPR3HardenedStatic_SOURCES += \
+	freebsd/SUPLib-freebsd.cpp
+else
+SUPR3HardenedStatic_SOURCES += \
 	$(KBUILD_TARGET)/SUPLib-$(KBUILD_TARGET).cpp
+endif
 
 #
 # VBoxSupSvc - The system wide service/daemon.
@@ -119,7 +133,15 @@
 VBoxSupSvc_SOURCES = \
 	SUPSvc.cpp \
 	SUPSvcGlobal.cpp \
+	
+ifeq ($(KBUILD_TARGET),gnukfreebsd)
+VBoxSupSvc_SOURCES += \
+	freebsd/SUPSvc-freebsd.cpp
+else
+VBoxSupSvc_SOURCES += \
 	$(KBUILD_TARGET)/SUPSvc-$(KBUILD_TARGET).cpp
+endif
+
 if1of ($(KBUILD_TARGET), win)
  VBoxSupSvc_SOURCES += \
 	SUPSvcGrant.cpp
@@ -158,8 +180,13 @@
 SUPR0IdcClient_TEMPLATE = VBOXR0DRV
 SUPR0IdcClient_DEFS = IN_RT_R0 IN_SUP_R0 IN_SUP_STATIC
 SUPR0IdcClient_SDKS.win = W2K3DDK WINPSDKINCS
+ifeq ($(KBUILD_TARGET),gnukfreebsd)
 SUPR0IdcClient_SOURCES.$(KBUILD_TARGET) = \
+	freebsd/SUPR0IdcClient-freebsd.c
+else
+SUPR0IdcClient_SOURCES.$(KBUILD_TARGET) = \
 	$(KBUILD_TARGET)/SUPR0IdcClient-$(KBUILD_TARGET).c
+endif
 SUPR0IdcClient_SOURCES = \
 	SUPR0IdcClient.c \
 	SUPR0IdcClientComponent.c \
@@ -396,7 +423,7 @@
 	SUPDrvSem.c
 
 endif # os2
-ifeq ($(KBUILD_TARGET),freebsd)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
 
 #
 # vboxdrv.ko - The FreeBSD Kernel Module.
@@ -406,8 +433,8 @@
 vboxdrv_INCS         := $(PATH_SUB_CURRENT)
 vboxdrv_LIBS          = $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
 vboxdrv_SOURCES      := \
-	$(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).c \
-	$(PATH_SUB_CURRENT)/$(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).def \
+	freebsd/SUPDrv-freebsd.c \
+	$(PATH_SUB_CURRENT)/freebsd/SUPDrv-freebsd.def \
 	SUPDrv.c \
 	SUPDrvSem.c
 ## @todo the SUPDrv-freebsd.def is most probably gonna break it and require build system hacking...
Index: src/VBox/HostDrivers/Makefile.kmk
===================================================================
--- src/VBox/HostDrivers/Makefile.kmk	(revision 37995)
+++ src/VBox/HostDrivers/Makefile.kmk	(working copy)
@@ -30,12 +30,12 @@
  ifdef VBOX_WITH_USB
   include $(PATH_SUB_CURRENT)/VBoxUSB/Makefile.kmk
  endif
- if1of ($(KBUILD_TARGET), darwin solaris win linux freebsd)
+ if1of ($(KBUILD_TARGET), darwin solaris win linux freebsd gnukfreebsd)
   ifdef VBOX_WITH_NETFLT
    include $(PATH_SUB_CURRENT)/VBoxNetFlt/Makefile.kmk
   endif
  endif
- if1of ($(KBUILD_TARGET), darwin solaris linux freebsd)
+ if1of ($(KBUILD_TARGET), darwin solaris linux freebsd gnukfreebsd)
   ifdef VBOX_WITH_NETADP
    include $(PATH_SUB_CURRENT)/VBoxNetAdp/Makefile.kmk
   endif
@@ -50,7 +50,7 @@
   endif
  endif
 
- if1of ($(KBUILD_TARGET),linux freebsd)
+ if1of ($(KBUILD_TARGET),linux freebsd gnukfreebsd)
   #
   # Install the Makefile for module compilation on Linux and FreeBSD hosts
   #
@@ -59,9 +59,10 @@
   HostDrivers-src_MODE            = a+r,u+w
   HostDrivers-src_SOURCES.linux   = linux/Makefile
   HostDrivers-src_SOURCES.freebsd = freebsd/Makefile
+  HostDrivers-src_SOURCES.gnukfreebsd = freebsd/Makefile
  endif
 
- if1of ($(KBUILD_TARGET),linux)
+ if1of ($(KBUILD_TARGET),linux gnukfreebsd)
   INSTALLS += HostDrivers-dkms-sh
   HostDrivers-dkms-sh_INST    = bin/src/
   HostDrivers-dkms-sh_MODE    = a+rx,u+w
Index: src/VBox/Additions/common/VBoxGuest/Makefile.kmk
===================================================================
--- src/VBox/Additions/common/VBoxGuest/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/common/VBoxGuest/Makefile.kmk	(working copy)
@@ -19,13 +19,14 @@
 include	$(KBUILD_PATH)/subheader.kmk
 
 
-if1of ($(KBUILD_TARGET), freebsd $(if $(defined VBOX_WITH_ADDITION_DRIVERS),linux,) os2 solaris win)
+if1of ($(KBUILD_TARGET), freebsd $(if $(defined VBOX_WITH_ADDITION_DRIVERS),linux gnukfreebsd,) os2 solaris win)
  #
  # VBoxGuest - The Guest Additions Driver.
  #
  SYSMODS += VBoxGuest
  VBoxGuest_TEMPLATE      = VBOXGUESTR0
  VBoxGuest_NAME.freebsd  = vboxguest
+ VBoxGuest_NAME.gnukfreebsd = vboxguest
  VBoxGuest_NAME.linux    = vboxguest
  VBoxGuest_NAME.solaris  = vboxguest
  VBoxGuest_NOINST.linux  = true
@@ -46,10 +47,14 @@
  #VBoxGuest_DEFS.win     += LOG_ENABLED LOG_TO_BACKDOOR
  VBoxGuest_DEPS.solaris += $(VBOX_SVN_REV_KMK)
  VBoxGuest_DEPS.linux   += $(VBOX_SVN_REV_HEADER)
- VBoxGuest_DEPS.freebsd += $(VBOX_SVN_REV_HEADER)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+ VBoxGuest_DEPS         += $(VBOX_SVN_REV_HEADER)
+endif
  VBoxGuest_DEFS          = VBGL_VBOXGUEST VBOX_WITH_HGCM
  VBoxGuest_INCS          = .
- VBoxGuest_INCS.freebsd  = $(PATH_VBoxGuest) $(PATH_INS)/gen-sys-hdrs
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+ VBoxGuest_INCS         += $(PATH_VBoxGuest) $(PATH_INS)/gen-sys-hdrs
+endif
  VBoxGuest_INCS.linux    = ../../../Runtime/r0drv/linux
  VBoxGuest_LDFLAGS.solaris += -N misc/ctf
  ifneq ($(KBUILD_TARGET),os2)
@@ -67,10 +72,12 @@
     VBoxGuest.cpp_SDKS   = WINDDKWLH
    endif
   endif # win
-  ifn1of ($(KBUILD_TARGET), linux freebsd solaris)
+  if1of ($(KBUILD_TARGET), linux solaris)
+   VBoxGuest_SOURCES    = VBoxGuest-$(KBUILD_TARGET).c
+  else if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+   VBoxGuest_SOURCES    = VBoxGuest-freebsd.c
+  else
    VBoxGuest_SOURCES    = VBoxGuest-$(KBUILD_TARGET).cpp
-  else
-   VBoxGuest_SOURCES    = VBoxGuest-$(KBUILD_TARGET).c
   endif
   VBoxGuest_SOURCES     += \
   	VBoxGuest.cpp \
@@ -83,10 +90,12 @@
   VBoxGuest_LIBS        += \
   	$(VBOX_LIB_VBGL_R0BASE) \
   	$(VBOX_LIB_IPRT_GUEST_R0)
-  VBoxGuest_ORDERDEPS.freebsd = \
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+    VBoxGuest_ORDERDEPS += \
   	$(PATH_INS)/gen-sys-hdrs/pci_if.h \
   	$(PATH_INS)/gen-sys-hdrs/bus_if.h \
   	$(PATH_INS)/gen-sys-hdrs/device_if.h
+  endif
  else # OS/2:
   # The library order is crucial, so a bit of trickery is necessary.
   # A library is used to make sure that VBoxGuestA-os2.asm is first in the link. (temporary hack?)
@@ -206,7 +215,7 @@
 
 endif # Linux
 
-ifeq ($(KBUILD_TARGET),freebsd)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
  #
  # Install the source files and script(s).
  #
Index: src/VBox/Additions/common/crOpenGL/Makefile.kmk
===================================================================
--- src/VBox/Additions/common/crOpenGL/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/common/crOpenGL/Makefile.kmk	(working copy)
@@ -31,7 +31,7 @@
     VBoxOGLpackspu \
     VBoxOGLfeedbackspu
 
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
 DLLS += \
     VBoxOGL \
     VBoxOGLarrayspu \
@@ -40,16 +40,16 @@
     VBoxOGLfeedbackspu
 endif
 
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  #VBoxOGL_DRI = 1
- ifn1of ($(KBUILD_TARGET),solaris freebsd)   # No DRI on Solaris yet
+ ifn1of ($(KBUILD_TARGET),solaris freebsd gnukfreebsd)   # No DRI on Solaris yet
   VBoxOGL_FAKEDRI = 1
  endif
 
  # Only Solaris right now needs C stubs because I can't figure out how to
  # generate the GOT based relocation ASM yet.
  ifdef VBoxOGL_FAKEDRI
-  if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),solaris.x86 solaris.amd64 linux.x86 linux.amd64 freebsd.x86 freebsd.amd64)
+  if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),solaris.x86 solaris.amd64 linux.x86 linux.amd64 freebsd.x86 freebsd.amd64 gnukfreebsd.x86 gnukfreebsd.amd64)
    VBOX_OGL_GLX_USE_CSTUBS = 1
   endif
  endif
@@ -61,7 +61,7 @@
 #
 VBoxOGL_TEMPLATE       = VBOXCROGLR3GUESTDLL
 VBoxOGL_INCS           = .
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGL_INCS     += \
 	$(VBOX_PATH_X11_ROOT)/libXdamage-1.1 \
 	$(VBOX_PATH_X11_ROOT)/libXcomposite-0.4.0 \
@@ -113,7 +113,7 @@
 	$(VBOX_PATH_CROGL_GENFILES)/NULLfuncs.c \
 	$(VBOX_PATH_CROGL_GENFILES)/tsfuncs.c
 
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGL_SOURCES += \
 	glx.c \
 	xfont.c
@@ -129,8 +129,10 @@
  	$(VBOX_PATH_CROGL_GENFILES)/linux_exports_dri.asm
   VBoxOGL_SOURCES.solaris += \
  	$(VBOX_PATH_CROGL_GENFILES)/solaris_exports_dri.asm
-  VBoxOGL_SOURCES.freebsd += \
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+  VBoxOGL_SOURCES += \
  	$(VBOX_PATH_CROGL_GENFILES)/freebsd_exports_dri.asm
+  endif
  else ifdef VBoxOGL_FAKEDRI
   VBoxOGL_SOURCES += \
  	fakedri_drv.c
@@ -141,24 +143,30 @@
    VBoxOGL_SOURCES.linux += \
  	$(VBOX_PATH_CROGL_GENFILES)/linux_glxapi_exports.asm \
  	$(VBOX_PATH_CROGL_GENFILES)/linux_exports_dri.asm
-   VBoxOGL_SOURCES.freebsd += \
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+   VBoxOGL_SOURCES += \
  	$(VBOX_PATH_CROGL_GENFILES)/freebsd_glxapi_exports.asm \
  	$(VBOX_PATH_CROGL_GENFILES)/freebsd_exports_dri.asm
+  endif
   else
    VBoxOGL_SOURCES.solaris += \
   	$(VBOX_PATH_CROGL_GENFILES)/solaris_exports.c
   VBoxOGL_SOURCES.linux += \
   	$(VBOX_PATH_CROGL_GENFILES)/linux_exports.c
-  VBoxOGL_SOURCES.freebsd += \
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+  VBoxOGL_SOURCES += \
   	$(VBOX_PATH_CROGL_GENFILES)/freebsd_exports.c
   endif
+  endif
  else
   VBoxOGL_SOURCES.linux += \
   	$(VBOX_PATH_CROGL_GENFILES)/linux_exports.asm
   VBoxOGL_SOURCES.solaris += \
   	$(VBOX_PATH_CROGL_GENFILES)/solaris_exports.c
-  VBoxOGL_SOURCES.freebsd += \
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
+  VBoxOGL_SOURCES += \
   	$(VBOX_PATH_CROGL_GENFILES)/freebsd_exports.c
+  endif
  endif
 endif
 
@@ -199,7 +207,7 @@
 	$(VBOX_LIB_VBGL_R3_SHARED) \
 	$(VBOX_LIB_OGL_CRUTIL) \
 	$(PATH_LIB)/additions/VBoxOGLspuload$(VBOX_SUFF_LIB)
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGL_LIBS += \
  	$(PATH_LIB)/libXcomposite.so \
  	$(PATH_LIB)/libXdamage.so \
@@ -266,7 +274,7 @@
 	$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI)
   endif #ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),win.amd64)
  endif #ifdef VBOX_WITH_WDDM
-else if1of ($(KBUILD_TARGET), linux solaris freebsd)
+else if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
 $(VBOX_PATH_CROGL_GENFILES)/getprocaddress.c: $(PATH_SUB_CURRENT)/getprocaddress.py $(VBOX_CROGL_API_FILES) | $$(dir $$@)
 	$(call MSG_GENERATE,python,$@,$<)
 	$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI)
@@ -278,7 +286,7 @@
 		| $$(dir $$@)
 	$(call MSG_GENERATE,python,$@,$<)
 	$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI)
- else  ifeq ($(KBUILD_TARGET),freebsd)
+ else  if1of ($(KBUILD_TARGET),freebsd gnukfreebsd)
 $(VBOX_PATH_CROGL_GENFILES)/freebsd_exports.c: \
 		$(PATH_SUB_CURRENT)/FreeBSD_exports.py \
 		$(VBOX_CROGL_API_FILES) $(PATH_SUB_CURRENT)/entrypoints.py \
@@ -310,7 +318,7 @@
 		| $$(dir $$@)
 	$(call MSG_GENERATE,python,$@,$<)
 	$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI)
- else ifeq ($(KBUILD_TARGET),freebsd)
+ else if1of ($(KBUILD_TARGET),freebsd gnukfreebsd)
 $(VBOX_PATH_CROGL_GENFILES)/freebsd_exports_dri.asm: \
 		$(PATH_SUB_CURRENT)/FreeBSD_i386_exports_dri.py \
 		$(VBOX_CROGL_API_FILES) $(PATH_SUB_CURRENT)/entrypoints.py \
@@ -377,7 +385,7 @@
 VBoxOGLarrayspu_TEMPLATE      = VBOXCROGLR3GUESTDLL
 VBoxOGLarrayspu_INCS          = \
 	array
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLarrayspu_INCS += \
         $(VBOX_MESA_INCS)
 endif
@@ -419,7 +427,7 @@
 VBoxOGLpassthroughspu_TEMPLATE    = VBOXCROGLR3GUESTDLL
 VBoxOGLpassthroughspu_INCS        = \
 	passthrough
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLpassthroughspu_INCS += \
         $(VBOX_MESA_INCS)
 endif
@@ -462,7 +470,7 @@
 VBoxOGLpackspu_DEFS          = TRACKS_STATE=1 PACKS=1
 VBoxOGLpackspu_INCS          = \
 	pack
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLpackspu_INCS += \
         $(VBOX_MESA_INCS)
 endif
@@ -549,7 +557,7 @@
 VBoxOGLfeedbackspu_TEMPLATE    = VBOXCROGLR3GUESTDLL
 VBoxOGLfeedbackspu_INCS        = \
 	feedback
-if1of ($(KBUILD_TARGET), linux solaris freebsd)
+if1of ($(KBUILD_TARGET), linux solaris freebsd gnukfreebsd)
  VBoxOGLfeedbackspu_INCS += \
         $(VBOX_MESA_INCS)
 endif
Index: src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk
===================================================================
--- src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk	(working copy)
@@ -39,7 +39,7 @@
 	VBoxGuestR3Lib \
 	VBoxGuestR3LibShared
 ifndef VBOX_ONLY_TESTSUITE
- if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux netbsd openbsd)
   LIBRARIES += \
   	VBoxGuestR3LibXFree86
  endif
Index: src/VBox/Additions/common/Makefile.kmk
===================================================================
--- src/VBox/Additions/common/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/common/Makefile.kmk	(working copy)
@@ -22,10 +22,10 @@
 ifndef VBOX_ONLY_TESTSUITE
  include $(PATH_SUB_CURRENT)/VBoxGuestLib/Makefile.kmk
  include $(PATH_SUB_CURRENT)/VBoxControl/Makefile.kmk
- if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux os2 solaris win)
   include $(PATH_SUB_CURRENT)/VBoxGuest/Makefile.kmk
  endif
- if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux os2 solaris win)
   include $(PATH_SUB_CURRENT)/VBoxService/Makefile.kmk
  endif
  ifdef VBOX_WITH_CROGL
Index: src/VBox/Additions/x11/VBoxClient/Makefile.kmk
===================================================================
--- src/VBox/Additions/x11/VBoxClient/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/x11/VBoxClient/Makefile.kmk	(working copy)
@@ -28,7 +28,9 @@
 ifdef VBOX_WITH_DBUS
  VBoxClient_DEFS += VBOX_WITH_DBUS
 endif
-VBoxClient_DEFS.linux += _GNU_SOURCE
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxClient_DEFS += _GNU_SOURCE
+endif
 VBoxClient_SOURCES = \
 	main.cpp
 VBoxClient_SOURCES += \
@@ -39,8 +41,10 @@
 	$(VBOX_LIBPATH32_X11)
 VBoxClient_LIBS.freebsd = \
 	iconv
-VBoxClient_LIBS.linux = \
+if1of ($(KBUILD_TARGET), linux gnukfreebsd)
+VBoxClient_LIBS += \
 	dl
+endif
 VBoxClient_LIBS.solaris = \
 	dl
 VBoxClient_LIBS = \
@@ -72,7 +76,7 @@
 
 ifdef VBOX_X11_SEAMLESS_GUEST
  if defined(VBOX_WITH_TESTCASES) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_SDK)
-  if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
+  if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux netbsd openbsd solaris)
 
 # Set this in LocalConfig.kmk if you are working on the X11 clipboard service
 # to automatically run the unit test at build time.
Index: src/VBox/Additions/x11/Makefile.kmk
===================================================================
--- src/VBox/Additions/x11/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/x11/Makefile.kmk	(working copy)
@@ -18,7 +18,7 @@
 include $(KBUILD_PATH)/subheader.kmk
 
 # Include sub-makefiles.
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
+if1of ($(KBUILD_TARGET), freebsd gnukfreebsd linux netbsd openbsd solaris)
  include $(PATH_SUB_CURRENT)/VBoxClient/Makefile.kmk
  include $(PATH_SUB_CURRENT)/vboxvideo/Makefile.kmk
  include $(PATH_SUB_CURRENT)/vboxmouse/Makefile.kmk
Index: src/VBox/Additions/freebsd/drm/Makefile.kmk
===================================================================
--- src/VBox/Additions/freebsd/drm/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/freebsd/drm/Makefile.kmk	(working copy)
@@ -24,7 +24,7 @@
 ifdef VBOX_WITH_ADDITION_DRIVERS
  SYSMODS  += vboxvideo_drm
 endif
-ifneq ($(KBUILD_HOST),freebsd)
+ifneq ($(KBUILD_HOST),$(KBUILD_TARGET))
 $(error "The FreeBSD guest additions can only be built on FreeBSD!")
 endif
 
@@ -45,19 +45,19 @@
 vboxvideo_drm_NAME          = vboxvideo
 vboxvideo_drm_DEFS          = VBOX_WITH_HGCM VBOX_SVN_REV=$(VBOX_SVN_REV)
 vboxvideo_drm_DEPS         += $(VBOX_SVN_REV_KMK)
-vboxvideo_drm_INCS.freebsd  = \
+vboxvideo_drm_INCS         += \
 	$(vboxvideo_drm_0_OUTDIR) \
 	$(PATH_INS)/gen-sys-hdrs
 vboxvideo_drm_SOURCES       = vboxvideo_drm.c
 vboxvideo_drm_LIBS          = \
 	$(VBOX_LIB_VBGL_R0) \
 	$(VBOX_LIB_IPRT_GUEST_R0)
-vboxvideo_drm_ORDERDEPS.freebsd = \
+vboxvideo_drm_ORDERDEPS    += \
 	$(PATH_INS)/gen-sys-hdrs/pci_if.h \
 	$(PATH_INS)/gen-sys-hdrs/bus_if.h \
 	$(PATH_INS)/gen-sys-hdrs/device_if.h \
 	$(vboxvideo_drm_0_OUTDIR)/opt_drm.h
-vboxvideo_drm_CLEAN.freebsd = $(vboxvideo_drm_DEPS)
+vboxvideo_drm_CLEAN         = $(vboxvideo_drm_DEPS)
 
 #
 # Header for DRM not included by us.
Index: src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk
===================================================================
--- src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk	(working copy)
@@ -18,14 +18,14 @@
 SUB_DEPTH = ../../../../..
 include	$(KBUILD_PATH)/subheader.kmk
 
-ifneq ($(KBUILD_HOST),freebsd)
+ifneq ($(KBUILD_HOST),$(KBUILD_TARGET))
 $(error "The FreeBSD guest additions can only be built on FreeBSD!")
 endif
 
 #
 # vboxvfs - The Shared Folder Driver
 #
-SYSMODS.freebsd      += vboxvfs
+SYSMODS              += vboxvfs
 vboxvfs_TEMPLATE      = VBOXGUESTR0
 vboxvfs_DEFS          = VBOX_WITH_HGCM
 vboxvfs_INCS          = \
Index: src/VBox/Additions/freebsd/Makefile.kmk
===================================================================
--- src/VBox/Additions/freebsd/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/freebsd/Makefile.kmk	(working copy)
@@ -18,7 +18,7 @@
 SUB_DEPTH = ../../../..
 include	$(KBUILD_PATH)/subheader.kmk
 
-ifneq ($(KBUILD_HOST),freebsd)
+ifneq ($(KBUILD_HOST),$(KBUILD_TARGET))
 $(error "The FreeBSD guest additions installer can only be built on FreeBSD!")
 endif
 
Index: src/VBox/Additions/Makefile.kmk
===================================================================
--- src/VBox/Additions/Makefile.kmk	(revision 37995)
+++ src/VBox/Additions/Makefile.kmk	(working copy)
@@ -52,7 +52,7 @@
   include $(PATH_SUB_CURRENT)/x11/Makefile.kmk
  endif
 
- ifeq ($(KBUILD_TARGET),freebsd)
+ if1of ($(KBUILD_TARGET), freebsd gnukfreebsd)
   include $(PATH_SUB_CURRENT)/freebsd/Makefile.kmk
  endif
  ifeq ($(KBUILD_TARGET),linux)
