VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk@ 107086

Last change on this file since 107086 was 107086, checked in by vboxsync, 2 months ago

*: Windows asan build fixes after the change to VS2022. jiraref:VBP-1439

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.4 KB
Line 
1# $Id: Makefile.kmk 107086 2024-11-21 14:03:37Z vboxsync $
2## @file
3# Makefile for the Windows guest display driver.
4#
5
6#
7# Copyright (C) 2011-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
31ifdef VBOX_WITH_MESA3D
32 ifndef VBOX_MESA3D_CONFIG_KMK_INCLUDED
33 include $(PATH_ROOT)/src/VBox/Additions/3D/Config.kmk
34 endif
35endif
36
37ifdef VBOX_WITH_XPDM
38 #
39 # VBoxDisp - Windows Guest Additions XPDM Display Driver
40 #
41 # Note. This has to run on NT4! (*_NT4 => *_W2K3 when targeting 64-bit.)
42 #
43 SYSMODS += VBoxDisp
44 VBoxDisp_TEMPLATE = VBoxGuestR0Drv
45 VBoxDisp_SYSSUFF = .dll
46 VBoxDisp_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_NT4)
47 VBoxDisp_DEFS.x86 = _WIN32_WINNT=0x0501
48 VBoxDisp_DEFS = VBOX_WITH_DDRAW
49 VBoxDisp_DEFS += LOG_TO_BACKDOOR #LOG_ENABLED
50 ifdef VBOX_WITH_VIDEOHWACCEL
51 VBoxDisp_DEFS += VBOX_WITH_VIDEOHWACCEL
52 endif
53 #VBoxDisp_DEFS += VBOX_VBVA_ADJUST_RECT
54 VBoxDisp_INCS = \
55 ../../../include \
56 .. \
57 $(VBOX_GRAPHICS_INCS)
58 VBoxDisp_LDFLAGS.x86 = /Entry:DrvEnableDriver@12
59 VBoxDisp_LDFLAGS.amd64 = /Entry:DrvEnableDriver
60 VBoxDisp_SOURCES = \
61 xpdm/VBoxDispDriver.cpp \
62 xpdm/VBoxDispMini.cpp \
63 xpdm/VBoxDispMouse.cpp \
64 xpdm/VBoxDispPalette.cpp \
65 xpdm/VBoxDispVBVA.cpp \
66 xpdm/VBoxDispDrawCmd.cpp \
67 xpdm/VBoxDispVRDP.cpp \
68 xpdm/VBoxDispVrdpBmp.cpp \
69 xpdm/VBoxDispVrdpTxt.cpp \
70 xpdm/VBoxDispDriverDDraw.cpp \
71 xpdm/VBoxDispDDraw.cpp \
72 xpdm/VBoxDisp.def \
73 xpdm/VBoxDisp.rc \
74 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp \
75 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIBuffers.cpp \
76 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIHostCmd.cpp \
77 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/VBVABase.cpp \
78 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/Modesetting.cpp
79 ifdef VBOX_WITH_VIDEOHWACCEL
80 VBoxDisp_SOURCES += \
81 xpdm/VBoxDispVHWA.cpp \
82 xpdm/VBoxDispDDrawVHWA.cpp
83 endif
84
85 VBoxDisp_LIBS = \
86 $(VBOX_LIB_IPRT_GUEST_R0_NT4) \
87 $(VBOX_PATH_ADDITIONS_LIB)/HGSMIGuestR0Lib$(VBOX_SUFF_LIB) \
88 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB)/win32k.lib # Linker needs newer win32k.lib (for x86 at least); incompatible loadcfg.obj in the WDK 7.1 one.
89 ifneq ($(VBOX_VCC_CC_GUARD_CF),)
90 VBoxDisp_LIBS += \
91 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB)/BufferOverflowGDI.lib # for ___security_cookie
92 endif
93 VBoxDisp_USES.win += vboximportchecker
94 VBoxDisp_VBOX_IMPORT_CHECKER.win.x86 = nt4/r0
95 VBoxDisp_VBOX_IMPORT_CHECKER.win.amd64 = xp64/r0
96
97 # Signing requires both miniport and display drivers so it'll be dealt with in the parent makefile.
98 if defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
99 VBoxDisp_INSTTYPE := none
100 VBoxDisp_DEBUG_INSTTYPE := both
101 ifdef VBOX_WITH_WDDM
102 VBoxDispD3D_INSTTYPE := none
103 VBoxDispD3D_DEBUG_INSTTYPE := both
104 ifdef VBOX_WITH_WDDM_DX
105 VBoxDX_INSTTYPE := none
106 VBoxDX_DEBUG_INSTTYPE := both
107 endif
108 endif
109 endif
110endif
111
112ifdef VBOX_WITH_WDDM
113 #
114 # VBoxDispD3D - Windows Guest Additions WDDM R3 Display Driver
115 #
116 DLLS += VBoxDispD3D
117 VBoxDispD3D_TEMPLATE = VBoxGuestR3DllMinVista
118 VBoxDispD3D_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
119 VBoxDispD3D_DEFS = UNICODE _UNICODE VBOX_WITH_WDDM VBOXWDDMDISP LOG_TO_BACKDOOR LOG_TO_BACKDOOR_DRV VBOX_WITH_HGCM
120 ifdef DEBUG_misha
121 VBoxDispD3D_DEFS += LOG_ENABLED
122 endif
123 ifdef VBOXWDDM_WITH_VBVA
124 VBoxDispD3D_DEFS += VBOXWDDM_WITH_VBVA
125 endif
126 ifdef VBOX_WITH_VIDEOHWACCEL
127 VBoxDispD3D_DEFS += VBOX_WITH_VIDEOHWACCEL
128 endif
129 # Avoid "src\VBox\Additions\3D\mesa\mesa-21.3.8\include\c99_compat.h(99): warning C4668: '__STDC_VERSION__'
130 # is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'"
131 VBoxDispD3D_DEFS += __STDC_VERSION__=0
132 VBoxDispD3D_INCS = \
133 ../../../include \
134 .. \
135 $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/shared \
136 $(VBOX_GRAPHICS_INCS)
137 VBoxDispD3D_SOURCES = \
138 wddm/VBoxDispD3D.cpp \
139 wddm/VBoxDispD3DIf.cpp \
140 wddm/VBoxDispDbg.cpp \
141 wddm/VBoxD3DIf.cpp \
142 wddm/VBoxDispD3D.rc \
143 wddm/VBoxDispD3D.def
144 VBoxDispD3D_LIBS = \
145 $(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
146 $(VBOX_LIB_VBGL_R3_SHARED) \
147 $(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
148 Psapi.lib \
149 $(VBOX_PATH_ADDITIONS_LIB)/VBoxDispMpLogger$(VBOX_SUFF_LIB) \
150 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmKmt$(VBOX_SUFF_LIB)
151
152 ifdef VBOX_WITH_VMSVGA
153 VBoxDispD3D_DEFS += VBOX_WITH_VMSVGA
154 VBoxDispD3D_INCS += \
155 $(PATH_ROOT)/src/VBox/Additions/3D/win/include \
156 $(PATH_ROOT)/src/VBox/Devices/Graphics/vmsvga_include
157 endif
158
159 ifdef VBOX_WITH_MESA3D
160 VBoxDispD3D_DEFS += VBOX_WITH_MESA3D
161 VBoxDispD3D_DEFS += VBOX_MESA_V_MAJOR=$(VBOX_MESA_V_MAJOR)
162 VBoxDispD3D_INCS += \
163 $(VBOX_PATH_MESA)/src/gallium/include \
164 $(VBOX_PATH_MESA)/src \
165 $(VBOX_PATH_MESA)/include/c99 \
166 $(VBOX_PATH_MESA)/include
167 VBoxDispD3D_SOURCES += \
168 wddm/gallium/GaDxva.cpp \
169 wddm/gallium/GaDrvEnvWddm.cpp \
170 wddm/gallium/GaWddm.cpp \
171 wddm/gallium/GaDdi.cpp \
172 wddm/gallium/Present.cpp \
173 wddm/gallium/VBoxGallium.cpp \
174 wddm/gallium/VBoxGaD3DDevice9Ex.cpp \
175 wddm/gallium/VBoxD3DAdapter9.c
176
177 ifdef VBOX_WITH_VMSVGA3D_DX
178 VBoxDispD3D_DEFS += VBOX_WITH_VMSVGA3D_DX9
179 endif
180
181 ifdef VBOX_WITH_MESA3D_D3DTEST
182 VBoxDispD3D_DEFS += VBOX_WITH_MESA3D_D3DTEST
183 VBoxDispD3D_SOURCES += \
184 wddm/gallium/test/d3dhlp.cpp \
185 wddm/gallium/test/d3d9render.cpp \
186 wddm/gallium/GaDrvTest.cpp
187 endif
188 endif
189
190 #
191 # 64-bit systems needs a 32-bit version of VBoxDispD3D.
192 #
193 DLLS.amd64 += VBoxDispD3D-x86
194 VBoxDispD3D-x86_EXTENDS = VBoxDispD3D
195 VBoxDispD3D-x86_BLD_TRG_ARCH = x86
196 VBoxDispD3D-x86_LIBS = \
197 $(VBOX_LIB_IPRT_GUEST_R3_X86_SHARED) \
198 $(VBOX_LIB_VBGL_R3_X86_SHARED) \
199 $(VBOX_LIB_IPRT_GUEST_R3_X86_SHARED) \
200 Psapi.lib \
201 $(VBOX_PATH_ADDITIONS_LIB)/VBoxDispMpLogger-x86$(VBOX_SUFF_LIB) \
202 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmKmt-x86$(VBOX_SUFF_LIB)
203 VBoxDispD3D-x86_DEFS = $(VBoxDispD3D_DEFS) VBOX_WDDM_WOW64
204
205 #
206 # VGPU10 driver VBoxDX
207 #
208 ifdef VBOX_WITH_VMSVGA3D_DX
209 DLLS += VBoxDX
210 VBoxDX_TEMPLATE = VBoxGuestR3DllMinVista
211 VBoxDX_DEFS = UNICODE _UNICODE VBOX_WITH_VMSVGA VBOX_WITH_VMSVGA3D_DX
212 VBoxDX_DEFS += D3D_UMD_INTERFACE_VERSION=D3D_UMD_INTERFACE_VERSION_WIN8
213 VBoxDX_DEFS += DXGKDDI_INTERFACE_VERSION=DXGKDDI_INTERFACE_VERSION_WIN8
214 VBoxDX_INCS = \
215 $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/shared \
216 $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/common/wddm \
217 $(PATH_ROOT)/src/VBox/Additions/3D/win/include \
218 $(PATH_ROOT)/src/VBox/Additions/3D/win/VBoxWddmUmHlp \
219 $(PATH_ROOT)/src/VBox/Devices/Graphics/vmsvga_include \
220 $(VBOX_GRAPHICS_INCS)
221 VBoxDX_SOURCES = \
222 wddm/dx/VBoxDXDDI.cpp \
223 wddm/dx/VBoxDXDDIVideo.cpp \
224 wddm/dx/VBoxDX.cpp \
225 wddm/dx/VBoxDXVideo.cpp \
226 wddm/dx/VBoxDXCmd.cpp \
227 wddm/dx/VBoxDX.rc \
228 wddm/dx/VBoxDX.def
229 VBoxDX_LIBS = \
230 $(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
231 $(VBOX_LIB_VBGL_R3_SHARED) \
232 $(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
233 Psapi.lib \
234 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmHlp$(VBOX_SUFF_LIB)
235
236 # 64-bit systems need a 32-bit version of VBoxDX
237 DLLS.amd64 += VBoxDX-x86
238 VBoxDX-x86_EXTENDS = VBoxDX
239 VBoxDX-x86_BLD_TRG_ARCH = x86
240 VBoxDX-x86_LIBS = \
241 $(VBOX_LIB_IPRT_GUEST_R3_SHARED_X86) \
242 $(VBOX_LIB_VBGL_R3_SHARED_X86) \
243 $(VBOX_LIB_IPRT_GUEST_R3_SHARED_X86) \
244 Psapi.lib \
245 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmHlp-x86$(VBOX_SUFF_LIB)
246 VBoxDX-x86_DEFS = $(VBoxDX_DEFS) VBOX_WDDM_WOW64
247 endif # VBOX_WITH_VMSVGA3D_DX
248
249 include $(PATH_SUB_CURRENT)/wddm/shared/Makefile.kmk
250
251endif #ifdef VBOX_WITH_WDDM
252
253
254ifdef VBOX_WITH_VBOXVIDEOWINDBG
255 #
256 # A windbg extension and a few test programs.
257 #
258
259 DLLS += vbvdbg
260 vbvdbg_TEMPLATE = VBoxR3StaticDll
261 vbvdbg_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
262 vbvdbg_DEFS = UNICODE _UNICODE
263 vbvdbg_SOURCES = \
264 wddm/dbg/VBoxVideoWinDbg.cpp \
265 wddm/dbg/VBoxVideoWinDbg.def
266
267 PROGRAMS += tstMvWnd
268 tstMvWnd_TEMPLATE = VBoxR3Static
269 tstMvWnd_DEFS = UNICODE _UNICODE
270 tstMvWnd_SOURCES = wddm/dbg/tstMvWnd.cpp
271 #tstMvWnd_LIBS = $(VBOX_LIB_IPRT_GUEST_R3) - Use guest template if this is wanted! duh!
272 #tstMvWnd_LDFLAGS = /SUBSYSTEM:windows
273
274 PROGRAMS += DumpD3DCaps9
275 DumpD3DCaps9_TEMPLATE = VBoxR3Exe
276 DumpD3DCaps9_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
277 DumpD3DCaps9_DEFS = UNICODE _UNICODE
278 DumpD3DCaps9_SOURCES = wddm/dbg/DumpD3DCaps9.cpp
279 DumpD3DCaps9_LIBS = d3d9.lib
280
281 PROGRAMS += D3DFeatureLevel
282 D3DFeatureLevel_TEMPLATE = VBoxR3Static
283 D3DFeatureLevel_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
284 D3DFeatureLevel_SOURCES = wddm/dbg/D3DFeatureLevel.cpp
285 D3DFeatureLevel_LIBS = d3d11.lib
286 #D3DFeatureLevel_LIBS = $(VBOX_LIB_IPRT_GUEST_R3) d3d11.lib - Use guest template if this is wanted! duh!
287 #D3DFeatureLevel_LDFLAGS.win = /SUBSYSTEM:CONSOLE
288
289endif # VBOX_WITH_VBOXVIDEOWINDBG
290
291include $(FILE_KBUILD_SUB_FOOTER)
Note: See TracBrowser for help on using the repository browser.

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