VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/SharedFolders/driver/Makefile.kmk

Last change on this file was 106710, checked in by vboxsync, 6 months ago

Add/Nt/Shfl: Make it build on win.arm64. jiraref:VBP-1253

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.8 KB
Line 
1# $Id: Makefile.kmk 106710 2024-10-25 23:38:20Z vboxsync $
2## @file
3# Sub-Makefile for the VirtualBox Windows Guest Shared Folders FSD.
4#
5
6#
7# Copyright (C) 2006-2024 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31#
32# VBoxSF
33# Note! On X86 this is only used for windows 8 and later.
34# Note! On X86 we must link against ntoskrnl.lib from the default WDK when /guard:cf is enabled,
35# or the linker barfs at loadcfg.obj not containing a large enough load config structure.
36#
37SYSMODS += VBoxSF
38VBoxSF_TEMPLATE = VBoxGuestR0Drv
39VBoxSF_DEFS = LOG_TO_BACKDOOR VBOX_WITH_HGCM IN_RING0
40#VBoxSF_DEFS += LOG_ENABLED
41
42VBoxSF_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
43
44VBoxSF_LDFLAGS.x86 = -Entry:DriverEntry@8
45VBoxSF_LDFLAGS.amd64 = -Entry:DriverEntry
46VBoxSF_LDFLAGS.arm64 = -Entry:DriverEntry
47VBoxSF_SOURCES = \
48 vbsf.cpp \
49 net.cpp \
50 file.cpp \
51 info.cpp \
52 path.cpp \
53 vbsfhlp.cpp \
54 VBoxSF.rc
55VBoxSF_SOURCES.x86 = \
56 Win2kWorkarounds.c \
57 Win2kWorkaroundsA.asm
58VBoxSF_SOURCES.arm64 = \
59 Arm64CopySupStub.cpp
60
61if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
62 VBoxSF_LIBS = \
63 $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/rxce.lib \
64 $(VBoxSF_0_OUTDIR)/rdbsslib.lib \
65 $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/copysup.lib \
66 $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/hal.lib \
67 $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/ksecdd.lib \
68 $(VBOX_LIB_VBGL_R0) \
69 $(VBOX_LIB_IPRT_GUEST_R0) # before ntoskrnl.lib
70 ifneq ($(VBOX_VCC_CC_GUARD_CF),)
71 VBoxSF_LIBS += \
72 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/ntoskrnl.lib \
73 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowK.lib
74 else
75 VBoxSF_LIBS += \
76 $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/ntoskrnl.lib \
77 $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowK.lib
78 endif
79else
80 VBoxSF_LIBS = \
81 $(VBOX_LIB_VBGL_R0) \
82 $(VBOX_LIB_IPRT_GUEST_R0) \
83 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/rxce.lib \
84 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib \
85 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/hal.lib \
86 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/ksecdd.lib \
87 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/ntoskrnl.lib \
88 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowFastFailK.lib \
89 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.$(KBUILD_TARGET_ARCH))/libcntpr.lib
90endif
91
92if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
93 VBoxSF_CLEAN = \
94 $(VBoxSF_0_OUTDIR)/rdbsslib.lib
95endif
96
97VBoxSF_USES.win += vboximportchecker
98VBoxSF_VBOX_IMPORT_CHECKER.win.x86 = w8/r0
99VBoxSF_VBOX_IMPORT_CHECKER.win.amd64 = xp64/r0
100#VBoxSF_VBOX_IMPORT_CHECKER.win.arm64 = w10-1709/r0 - The 10.0.26100.0 libs uses ExAllocatePool2 which was added in W10 2004.
101## @todo win.arm64: support shared folders on windows 10 arm64.
102
103
104ifeq ($(KBUILD_TARGET_ARCH),x86)
105 #
106 # This driver version is used for Windows 2000, XP, W2K3, Vista and 7.
107 #
108 SYSMODS.x86 += VBoxSFW2K
109 VBoxSFW2K_EXTENDS := VBoxSF
110 VBoxSFW2K_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_W2K3)
111 VBoxSFW2K_LIBS = \
112 $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/rxce.lib \
113 $(VBoxSFW2K_0_OUTDIR)/rdbsslib.lib \
114 $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/copysup.lib \
115 $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/hal.lib \
116 $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/ksecdd.lib \
117 \
118 $(VBOX_LIB_VBGL_R0) \
119 $(VBOX_LIB_IPRT_GUEST_R0) # before ntoskrnl.lib
120 ifneq ($(VBOX_VCC_CC_GUARD_CF),)
121 VBoxSFW2K_LIBS += \
122 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.x86)/ntoskrnl.lib \
123 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB.x86)/BufferOverflowK.lib
124 else
125 VBoxSFW2K_LIBS += \
126 $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/ntoskrnl.lib \
127 $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/BufferOverflowK.lib
128 endif
129 VBoxSFW2K_CLEAN = \
130 $(VBoxSFW2K_0_OUTDIR)/rdbsslib.lib
131 VBoxSFW2K_USES.win += vboximportchecker
132 VBoxSFW2K_VBOX_IMPORT_CHECKER.win.x86 = w2k/r0
133endif
134
135
136include $(FILE_KBUILD_SUB_FOOTER)
137
138#
139# rdbsslib.lib symbol editing for x86 and amd64.
140#
141ifeq ($(KBUILD_TARGET_ARCH),x86)
142 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSF_0_OUTDIR)/rdbsslib.lib)
143
144 $(VBoxSF_0_OUTDIR)/rdbsslib.lib: $$(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib | $$(dir $$@) $(VBOX_EDIT_COFF_LIB)
145 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
146 $(VBOX_EDIT_COFF_LIB) --input $(requote sh,$(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib) --output "$@" \
147 --select "write.obj" \
148 --redefine-sym "__imp__CcFlushCache@16=_g_pfnWrFlushCache" \
149 --redefine-sym "__imp__CcPurgeCacheSection@16=_g_pfnWrPurgeCacheSection" \
150 --select "read.obj" \
151 --redefine-sym "__imp__CcFlushCache@16=_g_pfnRdFlushCache"
152
153 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSFW2K_0_OUTDIR)/rdbsslib.lib)
154 $(VBoxSFW2K_0_OUTDIR)/rdbsslib.lib: $$(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib | $$(dir $$@) $(VBOX_EDIT_COFF_LIB)
155 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
156 $(VBOX_EDIT_COFF_LIB) --input $(requote sh,$(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib) --output "$@" \
157 --select "write.obj" \
158 --redefine-sym "__imp__CcFlushCache@16=_g_pfnWrFlushCache" \
159 --redefine-sym "__imp__CcPurgeCacheSection@16=_g_pfnWrPurgeCacheSection" \
160 --select "read.obj" \
161 --redefine-sym "__imp__CcFlushCache@16=_g_pfnRdFlushCache"
162
163else ifeq ($(KBUILD_TARGET_ARCH),amd64)
164 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSF_0_OUTDIR)/rdbsslib.lib)
165 $(VBoxSF_0_OUTDIR)/rdbsslib.lib: $$(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib | $$(dir $$@) $(VBOX_EDIT_COFF_LIB)
166 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
167 $(VBOX_EDIT_COFF_LIB) --input $(requote sh,$(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/rdbsslib.lib) --output "$@" \
168 --select "write.obj" \
169 --redefine-sym "__imp_CcFlushCache=g_pfnWrFlushCache" \
170 --redefine-sym "__imp_CcPurgeCacheSection=g_pfnWrPurgeCacheSection" \
171 --select "read.obj" \
172 --redefine-sym "__imp_CcFlushCache=g_pfnRdFlushCache"
173endif # amd64
174
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette