Makefile.kmk revision d3cbc27baab0363d1b4c332aef6d583ece898ac2
de4157257515400c2c25373591135f110227b68cvboxsync# $Id$
de4157257515400c2c25373591135f110227b68cvboxsync## @file
de4157257515400c2c25373591135f110227b68cvboxsync# Sub-Makefile for the Network Filter Driver (VBoxNetFlt).
de4157257515400c2c25373591135f110227b68cvboxsync#
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync#
de4157257515400c2c25373591135f110227b68cvboxsync# Copyright (C) 2008 Sun Microsystems, Inc.
de4157257515400c2c25373591135f110227b68cvboxsync#
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync# Sun Microsystems, Inc. confidential
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync# All rights reserved
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync#
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsyncSUB_DEPTH = ../../../..
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsyncinclude $(KBUILD_PATH)/subheader.kmk
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsyncif1of ($(KBUILD_TARGET), darwin win)
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync#
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync# VBoxNetFlt.sys - The mixed case driver.
de4157257515400c2c25373591135f110227b68cvboxsync#
de4157257515400c2c25373591135f110227b68cvboxsyncSYSMODS += VBoxNetFlt
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_TEMPLATE = VBOXR0DRV
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_INST = $(INST_VBOXNETFLT)$(if $(eq $(KBUILD_TARGET),darwin),Contents/MacOS/)
de4157257515400c2c25373591135f110227b68cvboxsyncif defined(VBOX_SIGNING_MODE) && "$(KBUILD_TARGET)" == "win"
de4157257515400c2c25373591135f110227b68cvboxsync VBoxNetFlt_NOINST = true
de4157257515400c2c25373591135f110227b68cvboxsyncendif
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_DEFS = IN_RT_R0 VBOX_SVN_REV=$(VBOX_SVN_REV) IN_SUP_STATIC
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_SDKS.win = W2K3DDK WINPSDKINCS
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_INCS := $(PATH_SUB_CURRENT)
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_SOURCES.darwin = darwin/VBoxNetFlt-darwin.cpp
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_SOURCES.win = win/VBoxNetFlt-win.c win/VBoxNetFltPt-win.c win/VBoxNetFltNf-win.c win/VBoxNetFlt-win.rc
de4157257515400c2c25373591135f110227b68cvboxsyncifdef VBOX_NETFLT_ONDEMAND_BIND
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncVBoxNetFlt_DEFS.win += VBOX_NETFLT_ONDEMAND_BIND
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncelse
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_SOURCES.win += win/VBoxNetFltMp-win.c
de4157257515400c2c25373591135f110227b68cvboxsyncendif
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_SOURCES = VBoxNetFlt.c
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_LDFLAGS.darwin = -v -Wl,-whyload -Wl,-v -Wl,-whatsloaded
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt_LDFLAGS.win.x86 = -Entry:DriverEntry@8
ba8485daab567f4004a984eb709724cb2217d504vboxsyncVBoxNetFlt_LDFLAGS.win.amd64 = -Entry:DriverEntry
ba8485daab567f4004a984eb709724cb2217d504vboxsyncVBoxNetFlt_SOURCES.win.amd64 += win/VBoxNetFltA-win.asm
ba8485daab567f4004a984eb709724cb2217d504vboxsyncVBoxNetFlt_DEFS.win.amd64 += RT_WITH_W64_UNWIND_HACK
ba8485daab567f4004a984eb709724cb2217d504vboxsyncVBoxNetFlt_LIBS.win = \
e006a5cefba44e778d2bfec179aa00b347b31ecfvboxsync $(PATH_SDK_W2K3DDK_LIB)/ntoskrnl.lib \
ba8485daab567f4004a984eb709724cb2217d504vboxsync $(PATH_SDK_W2K3DDK_LIB)/hal.lib \
9d1274496c423743379ecfb581f623ccedd9ebeevboxsync $(PATH_SDK_W2K3DDK_LIB)/ndis.lib \
9f0a3520e48fa74caec1abadb643db5710ad97e0vboxsync $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
ba8485daab567f4004a984eb709724cb2217d504vboxsyncVBoxNetFlt_LIBS = \
e006a5cefba44e778d2bfec179aa00b347b31ecfvboxsync $(PATH_LIB)/SUPR0IdcClient$(VBOX_SUFF_LIB)
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync# Darwin extras.
de4157257515400c2c25373591135f110227b68cvboxsyncifeq ($(KBUILD_TARGET),darwin)
3bddd917f8743d7e0773c2872c497ca4dae57c78vboxsyncINSTALLS += VBoxNetFlt.kext
13ef4f36ce232d17f4738ffbc4ac21909898cc23vboxsyncVBoxNetFlt.kext_INST = $(INST_VBOXNETFLT)Contents/
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt.kext_SOURCES = \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_VBoxNetFlt.kext)/Info.plist
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt.kext_CLEAN = \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_VBoxNetFlt.kext)/Info.plist
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync$$(PATH_VBoxNetFlt.kext)/Info.plist: $(PATH_SUB_CURRENT)/darwin/Info.plist $(VBOX_VERSION_MK) | $$(dir $$@)
de4157257515400c2c25373591135f110227b68cvboxsync $(call MSG_GENERATE,VBoxNetFlt,$@,$<)
de4157257515400c2c25373591135f110227b68cvboxsync $(xQUIET)$(RM) -f $@
de4157257515400c2c25373591135f110227b68cvboxsync $(xQUIET)$(SED) \
de4157257515400c2c25373591135f110227b68cvboxsync -e 's/@VBOX_VERSION_STRING@/$(VBOX_VERSION_STRING)/g' \
3186f45ef453b44e92adeddf57bae69632e2c66avboxsync -e 's/@VBOX_VERSION_MAJOR@/$(VBOX_VERSION_MAJOR)/g' \
3186f45ef453b44e92adeddf57bae69632e2c66avboxsync -e 's/@VBOX_VERSION_MINOR@/$(VBOX_VERSION_MINOR)/g' \
de4157257515400c2c25373591135f110227b68cvboxsync -e 's/@VBOX_VERSION_BUILD@/$(VBOX_VERSION_BUILD)/g' \
de4157257515400c2c25373591135f110227b68cvboxsync --output $@ \
3186f45ef453b44e92adeddf57bae69632e2c66avboxsync $<
de4157257515400c2c25373591135f110227b68cvboxsync
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncINSTALLS.darwin += Scripts-darwin
de4157257515400c2c25373591135f110227b68cvboxsyncScripts-darwin_INST = $(INST_DIST)
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncScripts-darwin_SOURCES = \
de4157257515400c2c25373591135f110227b68cvboxsync darwin/loadnetflt.sh
de4157257515400c2c25373591135f110227b68cvboxsyncendif # darwin
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync# Windows extras.
de4157257515400c2c25373591135f110227b68cvboxsyncINSTALLS.win += VBoxNetFlt-inf
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt-inf_INST = $(INST_BIN)
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncVBoxNetFlt-inf_MODE = a+r,u+w
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncVBoxNetFlt-inf_SOURCES = \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.inf \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt_m.inf
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt-inf_CLEAN = $(VBoxNetFlt-inf_SOURCES)
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt-inf_BLDDIRS = $(PATH_TARGET)/VBoxNetFltCat.dir
de4157257515400c2c25373591135f110227b68cvboxsync
3186f45ef453b44e92adeddf57bae69632e2c66avboxsync$(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.inf: $(PATH_SUB_CURRENT)/win/VBoxNetFlt.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
de4157257515400c2c25373591135f110227b68cvboxsync $(call MSG_GENERATE,VBoxNetFlt-inf,$@,$<)
de4157257515400c2c25373591135f110227b68cvboxsync $(call VBOX_EDIT_INF_FN,$<,$@)
8796769239832e686064138005dd1b45f038348bvboxsync
8796769239832e686064138005dd1b45f038348bvboxsync$(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt_m.inf: $(PATH_SUB_CURRENT)/win/VBoxNetFlt_m.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
de4157257515400c2c25373591135f110227b68cvboxsync $(call MSG_GENERATE,VBoxNetFlt-inf,$@,$<)
8796769239832e686064138005dd1b45f038348bvboxsync $(call VBOX_EDIT_INF_FN,$<,$@)
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync ifdef VBOX_SIGNING_MODE
de4157257515400c2c25373591135f110227b68cvboxsyncVBoxNetFlt-inf_SOURCES += \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.sys \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync
de4157257515400c2c25373591135f110227b68cvboxsync$(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.sys: $$(TARGET_VBoxNetFlt) | $$(dir $$@)
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync $(INSTALL) -m 644 $< $(@D)
de4157257515400c2c25373591135f110227b68cvboxsync
3186f45ef453b44e92adeddf57bae69632e2c66avboxsync$(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.inf \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt_m.inf \
de4157257515400c2c25373591135f110227b68cvboxsync $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync $(call MSG_TOOL,Inf2Cat,VBoxNetFlt-inf,$@,$<)
de4157257515400c2c25373591135f110227b68cvboxsync $(call VBOX_MAKE_CAT_FN, $(@D),$@)
de4157257515400c2c25373591135f110227b68cvboxsync endif # signing
de4157257515400c2c25373591135f110227b68cvboxsync
de4157257515400c2c25373591135f110227b68cvboxsync#
de4157257515400c2c25373591135f110227b68cvboxsync# WinNetConfig - static library with host network interface config API
de4157257515400c2c25373591135f110227b68cvboxsync#
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncLIBRARIES.win += WinNetConfig
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncWinNetConfig_TEMPLATE = VBOXR3STATIC
de4157257515400c2c25373591135f110227b68cvboxsyncWinNetConfig_DEFS = _WIN32_WINNT=0x0500 _UNICODE UNICODE
3186f45ef453b44e92adeddf57bae69632e2c66avboxsyncWinNetConfig_SDKS = WINPSDK W2K3DDK
de4157257515400c2c25373591135f110227b68cvboxsyncWinNetConfig_SOURCES = \
de4157257515400c2c25373591135f110227b68cvboxsync win/WinNetConfig.cpp
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncelse if1of ($(KBUILD_TARGET), linux solaris)
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync#
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync# vboxnetflt(.ko/.o/) - The lower case driver.
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync# Note! On Solaris the name has to be <= 8 chars long.
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync#
de4157257515400c2c25373591135f110227b68cvboxsyncSYSMODS += vboxnetflt
0e17b29891cd74ccbd23b28441e92ae817c2edefvboxsyncvboxnetflt_TEMPLATE = VBOXR0DRV
7d4e1fc3835655581f938a1a387bc32049de8150vboxsyncvboxnetflt_NAME.solaris = vboxflt
de4157257515400c2c25373591135f110227b68cvboxsyncvboxnetflt_DEFS.linux = KBUILD_MODNAME=KBUILD_STR\(vboxnetflt\) KBUILD_BASENAME=KBUILD_STR\(vboxnetflt\) MODULE
de4157257515400c2c25373591135f110227b68cvboxsyncvboxnetflt_DEFS = IN_RT_R0
de4157257515400c2c25373591135f110227b68cvboxsyncvboxnetflt_DEFS.solaris += VBOX_SVN_REV=$(VBOX_SVN_REV)
de4157257515400c2c25373591135f110227b68cvboxsyncvboxnetflt_DEPS.solaris += $(VBOX_SVN_REV_KMK)
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncvboxnetflt_INCS.linux := \
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync $(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncvboxnetflt_INCS := \
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync $(PATH_SUB_CURRENT)
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncvboxnetflt_LDFLAGS.solaris += -N drv/vboxdrv
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsyncvboxnetflt_LIBS = \
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync $(PATH_LIB)/SUPR0IdcClient$(VBOX_SUFF_LIB)
58e7c901bdf9c8c46e6e20a8e8b99a84e206ddf4vboxsync## @todo vboxflt should resolves all the IPRT bits from vboxdrv.
de4157257515400c2c25373591135f110227b68cvboxsync#vboxnetflt_LIBS += \
de4157257515400c2c25373591135f110227b68cvboxsync# $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
d3cbc27baab0363d1b4c332aef6d583ece898ac2vboxsyncvboxnetflt_SOURCES.linux = linux/VBoxNetFlt-linux.c
d3cbc27baab0363d1b4c332aef6d583ece898ac2vboxsyncvboxnetflt_SOURCES.solaris = solaris/VBoxNetFlt-solaris.c
d3cbc27baab0363d1b4c332aef6d583ece898ac2vboxsyncvboxnetflt_SOURCES = VBoxNetFlt.c
d3cbc27baab0363d1b4c332aef6d583ece898ac2vboxsync
ba8485daab567f4004a984eb709724cb2217d504vboxsyncendif
cc8faa4971ccaf0d68fbfcfe15662fd63611203evboxsync
d3cbc27baab0363d1b4c332aef6d583ece898ac2vboxsyncifeq ($(KBUILD_TARGET),linux)
ba8485daab567f4004a984eb709724cb2217d504vboxsync #
d3cbc27baab0363d1b4c332aef6d583ece898ac2vboxsync # Install source files for compliation on Linux.
de4157257515400c2c25373591135f110227b68cvboxsync # files_vboxnetflt defines VBOX_VBOXNETFLT_SOURCES.
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync #
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync include $(PATH_SUB_CURRENT)/linux/files_vboxnetflt
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync INSTALLS += VBoxNetFlt-src
8796769239832e686064138005dd1b45f038348bvboxsync VBoxNetFlt-src_INST = bin/src/vboxnetflt/
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync VBoxNetFlt-src_MODE = a+r,u+w
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync VBoxNetFlt-src_SOURCES = $(subst ",,$(VBOX_VBOXNETFLT_SOURCES)) #"
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync VBoxNetFlt-src_SOURCES+= $(PATH_VBoxNetFlt-src)/Makefile
8796769239832e686064138005dd1b45f038348bvboxsync VBoxNetFlt-src_CLEAN = $(PATH_VBoxNetFlt-src)/Makefile
8796769239832e686064138005dd1b45f038348bvboxsync
8796769239832e686064138005dd1b45f038348bvboxsyncincludedep $(PATH_TARGET)/VBoxNetFlt-src-1.dep
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync$$(PATH_VBoxNetFlt-src)/Makefile: \
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync $(PATH_SUB_CURRENT)/linux/Makefile \
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync $$(if $$(eq $$(VBoxNetFlt/linux/Makefile_VBOX_HARDENED),$$(VBOX_WITH_HARDENING)),,FORCE) \
8796769239832e686064138005dd1b45f038348bvboxsync | $$(dir $$@)
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsyncifndef VBOX_WITH_HARDENING
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@ $<
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsyncelse
8796769239832e686064138005dd1b45f038348bvboxsync $(QUIET)$(CP) -f $< $@
8796769239832e686064138005dd1b45f038348bvboxsyncendif
3e7a39ff2686f649052206d7c0bdcdd2d7f024d4vboxsync %$(QUIET2)$(RM) -f -- $(PATH_TARGET)/VBoxNetFlt-src-1.dep
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync %$(QUIET2)$(APPEND) '$(PATH_TARGET)/VBoxNetFlt-src-1.dep' 'VBoxNetFlt/linux/Makefile_VBOX_HARDENED=$(VBOX_WITH_HARDENING)'
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync## Scripts needed for building the kernel modules
7d4e1fc3835655581f938a1a387bc32049de8150vboxsync### @todo generate these else where and move them from OTHERS to vboxmod-bin (which btw installs NOBIN files contrary to its name).
8796769239832e686064138005dd1b45f038348bvboxsync#
8796769239832e686064138005dd1b45f038348bvboxsync#$(PATH_BIN)/src/build_in_tmp: \
8796769239832e686064138005dd1b45f038348bvboxsync# $(PATH_SUB_CURRENT)/linux/build_in_tmp \
6436a02734030c1ef6800c287a5235bef8cedba4vboxsync# $(VBOX_VERSION_STAMP)
6436a02734030c1ef6800c287a5235bef8cedba4vboxsync# $(call MSG_TOOL,Creating,,$@)
8796769239832e686064138005dd1b45f038348bvboxsync# $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g; s;_MODULE_;vboxdrv;g" --output $@ $<
8796769239832e686064138005dd1b45f038348bvboxsync# $(QUIET)chmod 0755 $@
8796769239832e686064138005dd1b45f038348bvboxsync#
8796769239832e686064138005dd1b45f038348bvboxsync#$(PATH_BIN)/src/dkms.conf: \
8796769239832e686064138005dd1b45f038348bvboxsync# $(PATH_SUB_CURRENT)/linux/dkms.conf \
8796769239832e686064138005dd1b45f038348bvboxsync# $(VBOX_VERSION_STAMP)
8796769239832e686064138005dd1b45f038348bvboxsync# $(call MSG_TOOL,Creating,,$@)
8796769239832e686064138005dd1b45f038348bvboxsync# $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" --output $@ $<
6436a02734030c1ef6800c287a5235bef8cedba4vboxsync
6436a02734030c1ef6800c287a5235bef8cedba4vboxsyncendif # linux
6436a02734030c1ef6800c287a5235bef8cedba4vboxsync
6436a02734030c1ef6800c287a5235bef8cedba4vboxsyncinclude $(KBUILD_PATH)/subfooter.kmk
6436a02734030c1ef6800c287a5235bef8cedba4vboxsync
8796769239832e686064138005dd1b45f038348bvboxsync