VirtualBox

source: vbox/trunk/src/VBox/Devices/Makefile.kmk@ 84819

Last change on this file since 84819 was 84819, checked in by vboxsync, 5 years ago

Virtio/VirtioCore.cpp, Network/DevVirtioNet_1_0.cpp, Storage/DevVirtioSCSI.cpp: Renamed Virtio_1_0.cpp/h to VirtioCore.cpp/h to be consistent with bird's extraction of the common Virtio code to VIRTIOCORE. Further improved the API function names and comments, and changed key variables to simplify things and more clearly reflect their relationship to VirtIO architecture. For example PVIRTIO_DESC_CHAIN_T pDescChain becomes PVIRTQBUF pVirtqBuf and added comments above the VIRTQBUF typedef to explain what's going on. Moved all the API function descriptions into the header file.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 48.9 KB
Line 
1# $Id: Makefile.kmk 84819 2020-06-12 20:00:27Z vboxsync $
2## @file
3# Top-level sub-makefile for the devices, drivers and services.
4#
5
6#
7# Copyright (C) 2006-2020 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18SUB_DEPTH = ../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21# Make sure our Config.kmk is included.
22ifndef VBOX_DEVICES_CONFIG_KMK_INCLUDED
23 include $(PATH_SUB_CURRENT)/Config.kmk
24endif
25
26# Include sub-makefiles.
27if1of ($(KBUILD_TARGET_ARCH), $(VBOX_SUPPORTED_HOST_ARCHS))
28 include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
29 include $(PATH_SUB_CURRENT)/Audio/testcase/Makefile.kmk
30 include $(PATH_SUB_CURRENT)/Input/testcase/Makefile.kmk
31 ifdef VBOX_WITH_TESTCASES
32 include $(PATH_SUB_CURRENT)/Samples/Makefile.kmk
33 endif
34 if defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS)
35 include $(PATH_SUB_CURRENT)/PC/PXE/Makefile.kmk
36 else if defined(VBOX_WITH_PXE_ROM)
37 if !defined(VBOX_WITHOUT_IPXE)
38 include $(PATH_SUB_CURRENT)/PC/ipxe/Makefile.kmk
39 endif
40 endif
41endif
42if !defined(VBOX_ONLY_EXTPACKS)
43 if1of ($(KBUILD_TARGET_ARCH), $(VBOX_SUPPORTED_HOST_ARCHS))
44 include $(PATH_SUB_CURRENT)/BiosCommonCode/Makefile.kmk
45 include $(PATH_SUB_CURRENT)/PC/BIOS/Makefile.kmk
46 include $(PATH_SUB_CURRENT)/Graphics/BIOS/Makefile.kmk
47 endif
48
49 #
50 # Main targets.
51 #
52 if1of ($(KBUILD_TARGET_ARCH), $(VBOX_SUPPORTED_HOST_ARCHS))
53 LIBRARIES += ServicesR0
54 DLLS += VBoxDDU VBoxDD VBoxDD2
55 SYSMODS += VBoxDDR0
56 ifdef VBOX_WITH_RAW_MODE
57 SYSMODS += VBoxDDRC
58 endif
59 else
60 DLLS += VBoxDDU
61 endif
62
63
64 #
65 # VBoxDDU (shared object)
66 #
67 VBoxDDU_TEMPLATE = VBoxR3DllWarnNoPic
68 VBoxDDU_NAME = $(basename $(notdir $(LIB_DDU)))
69 VBoxDDU_INST.darwin = $(INST_DLL) $(INST_TESTCASE)
70 VBoxDDU_DEFS = IN_VBOXDDU
71 if defined(VBOX_WITH_VUSB) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
72 VBoxDDU_DEFS += VBOX_WITH_VUSB
73 endif
74 if defined(VBOX_WITH_USB) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
75 VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB
76 VBoxDDU_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
77 if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
78 VBoxDDU_DEFS += VBOX_WITH_EHCI_IMPL
79 endif
80 if defined(VBOX_WITH_XHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
81 VBoxDDU_DEFS += VBOX_WITH_XHCI_IMPL
82 endif
83 else
84 VBoxDDU_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK)
85 endif
86 VBoxDDU_SOURCES = \
87 Storage/VSCSI/VSCSIDevice.cpp \
88 Storage/VSCSI/VSCSILun.cpp \
89 Storage/VSCSI/VSCSILunSbc.cpp \
90 Storage/VSCSI/VSCSILunMmc.cpp \
91 Storage/VSCSI/VSCSISense.cpp \
92 Storage/VSCSI/VSCSIIoReq.cpp \
93 Storage/VSCSI/VSCSIVpdPagePool.cpp \
94 build/VBoxDDUDeps.cpp
95
96 ifdef VBOX_WITH_VSCSI_SSC
97 VBoxDDU_SOURCES += Storage/VSCSI/VSCSILunSsc.cpp
98 VBoxDDU_DEFS += VBOX_WITH_VSCSI_SSC
99 endif
100 VBoxDDU_LIBS = \
101 $(LIB_RUNTIME) \
102 $(PATH_STAGE_LIB)/StorageLib$(VBOX_SUFF_LIB)
103 if defined(VBOX_WITH_USB) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
104 VBoxDDU_LIBS += \
105 $(PATH_STAGE_LIB)/USBLib$(VBOX_SUFF_LIB)
106 VBoxDDU_LIBS.win += \
107 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
108 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/Newdev.lib
109 endif
110 VBoxDDU_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDDU.dylib
111 if defined(VBOX_WITH_USB) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
112 VBoxDDU_LDFLAGS.darwin += -framework IOKit
113 endif
114
115 VBoxDDU_LDFLAGS.linux = $(VBOX_GCC_NO_UNDEFINED)
116 $(call VBOX_SET_VER_INFO_DLL,VBoxDDU,VirtualBox VMM Devices and Drivers Utilities)
117
118
119endif # VBOX_ONLY_EXTPACKS
120if !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != "" # Goes on almost to the end of the file.
121
122
123 #
124 # VBoxDD (shared object)
125 #
126 VBoxDD_TEMPLATE = VBoxR3DllWarnNoPic
127 VBoxDD_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK) VBOX_NTDLL
128 Storage/DrvHostDVD.cpp_SDKS.win = ReorderCompilerIncs $(VBOX_WINDDK)
129 VBoxDD_INCS = \
130 build \
131 Network/slirp \
132 $(VBOX_GRAPHICS_INCS)
133 VBoxDD_DEFS = \
134 VBOX_HGCM_HOST_CODE \
135 $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
136 $(if $(VBOX_BIOS_DMI_FALLBACK),VBOX_BIOS_DMI_FALLBACK,) \
137 VBOX_WITH_DMI_CHASSIS \
138 VBOX_WITH_DMI_OEMSTRINGS \
139 $(if $(VBOX_WITH_NEW_LPC_DEVICE),VBOX_WITH_NEW_LPC_DEVICE,) \
140 $(if $(VBOX_WITH_IOMMU_AMD),VBOX_WITH_IOMMU_AMD,)
141 VBoxDD_DEFS.win = _WIN32_WINNT=0x0510
142 ifeq ($(KBUILD_TARGET_ARCH),x86)
143 VBoxDD_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE
144 endif
145 VBoxDD_SOURCES = \
146 build/VBoxDD.cpp \
147 \
148 Input/DevPS2.cpp \
149 Input/DevPS2K.cpp \
150 Input/DevPS2M.cpp \
151 Input/UsbKbd.cpp \
152 Input/UsbMouse.cpp \
153 Bus/DevPCI.cpp \
154 Bus/DevPciIch9.cpp \
155 Bus/MsiCommon.cpp \
156 Bus/MsixCommon.cpp \
157 $(if $(VBOX_WITH_IOMMU_AMD),Bus/DevIommuAmd.cpp,) \
158 EFI/DevSmc.cpp \
159 EFI/DevFlash.cpp \
160 EFI/FlashCore.cpp \
161 Graphics/DevVGA.cpp \
162 Storage/DevATA.cpp \
163 PC/DevPit-i8254.cpp \
164 PC/DevPIC.cpp \
165 PC/DevACPI.cpp \
166 PC/ACPI/VBoxAcpi.cpp \
167 PC/DevRTC.cpp \
168 PC/DevPcBios.cpp \
169 PC/DevFwCommon.cpp \
170 PC/DevPcArch.cpp \
171 $(if $(VBOX_WITH_NEW_LPC_DEVICE),PC/DevLpc-new.cpp,) \
172 GIMDev/GIMDev.cpp \
173 GIMDev/DrvUDP.cpp \
174 VMMDev/VMMDev.cpp \
175 $(if $(VBOX_WITH_HGCM),VMMDev/VMMDevHGCM.cpp,) \
176 VMMDev/VMMDevTesting.cpp \
177 Network/DevPCNet.cpp \
178 PC/DevDMA.cpp \
179 PC/DevHPET.cpp \
180 PC/DevIoApic.cpp \
181 Storage/DevFdc.cpp \
182 Parallel/DevParallel.cpp \
183 \
184 Input/DrvKeyboardQueue.cpp \
185 Input/DrvMouseQueue.cpp \
186 Network/DrvIntNet.cpp \
187 Network/DrvDedicatedNic.cpp \
188 PC/DrvACPI.cpp \
189 PC/DrvAcpiCpu.cpp \
190 Serial/DevSerial.cpp \
191 Serial/DevOxPcie958.cpp \
192 Serial/UartCore.cpp \
193 Serial/DrvChar.cpp \
194 Serial/DrvHostSerial.cpp \
195 Serial/DrvNamedPipe.cpp \
196 Serial/DrvTCP.cpp \
197 Serial/DrvRawFile.cpp \
198 Storage/Debug.cpp \
199 Storage/DrvVD.cpp \
200 Storage/ATAPIPassthrough.cpp \
201 Storage/IOBufMgmt.cpp \
202 Network/DrvNetSniffer.cpp \
203 Network/Pcap.cpp \
204 Trace/DrvIfsTrace.cpp \
205 Trace/DrvIfsTrace-serial.cpp
206 ifn1of ($(KBUILD_TARGET), os2)
207 VBoxDD_SOURCES += Storage/DrvHostBase.cpp
208 endif
209 ifn1of ($(KBUILD_TARGET), os2)
210 VBoxDD_SOURCES += Storage/DrvHostDVD.cpp
211 endif
212 ifn1of ($(KBUILD_TARGET), darwin freebsd os2 solaris)
213 VBoxDD_SOURCES += Storage/DrvHostFloppy.cpp
214 endif
215
216
217 ifn1of ($(KBUILD_TARGET), darwin)
218 VBoxDD_SOURCES += Storage/HBDMgmt-generic.cpp
219 endif
220
221 VBoxDD_SOURCES.darwin += \
222 Storage/HBDMgmt-darwin.cpp \
223 Storage/DrvHostBase-darwin.cpp
224
225 VBoxDD_SOURCES.freebsd += \
226 Storage/DrvHostBase-freebsd.cpp
227
228 VBoxDD_SOURCES.linux += \
229 Storage/DrvHostBase-linux.cpp
230
231 VBoxDD_SOURCES.solaris += \
232 Storage/DrvHostBase-solaris.cpp
233
234 VBoxDD_SOURCES.win += \
235 Storage/DrvHostBase-win.cpp
236
237 #VBoxDD_SOURCES.win += Storage/HBDMgmt-win.cpp #Disabled until remaining issues are sorted out
238
239 VBoxDD_LIBS = # more later.
240 VBoxDD_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD.dylib \
241 -framework CoreAudio \
242 -framework AudioUnit \
243 -framework AudioToolbox \
244 -framework IOKit \
245 -framework Carbon \
246 -framework DiskArbitration \
247 -framework SystemConfiguration
248 VBoxDD_LDFLAGS.linux = $(VBOX_GCC_NO_UNDEFINED)
249
250 # --- Tracing bits. ---
251
252 ifdef VBOX_WITH_DTRACE_R3
253 VBoxDD_DEFS += VBOX_WITH_DTRACE
254 VBoxDD_USES += dtrace
255 VBoxDD_SOURCES += build/VBoxDD.d
256 endif
257
258 # --- Graphics bits. ---
259
260 ifdef VBOXWDDM_TEST_UHGSMI
261 VBoxDD_DEFS += VBOXWDDM_TEST_UHGSMI
262 endif
263 ifdef VBOXWDDM_WITH_VBVA
264 VBoxDD_DEFS += VBOXWDDM_WITH_VBVA
265 endif
266 ifdef VBOX_WITH_VIDEOHWACCEL
267 VBoxDD_DEFS += VBOX_WITH_VIDEOHWACCEL
268 endif
269
270 ifdef VBOX_WITH_HGSMI
271 VBoxDD_DEFS += VBOX_WITH_HGSMI
272 VBoxDD_SOURCES += \
273 Graphics/DevVGA_VBVA.cpp \
274 Graphics/HGSMI/HGSMIHost.cpp
275 VBoxDD_LIBS += \
276 $(PATH_STAGE_LIB)/HGSMIHostR3Lib$(VBOX_SUFF_LIB)
277 endif
278
279 ifdef VBOX_WITH_WDDM
280 VBoxDD_DEFS += VBOX_WITH_WDDM
281 VBoxDD_SOURCES += \
282 Graphics/HGSMI/SHGSMIHost.cpp
283 endif
284
285 ifdef VBOX_WITH_VMSVGA
286 VBoxDD_DEFS += VBOX_WITH_VMSVGA
287 VBoxDD_SOURCES += Graphics/DevVGA-SVGA.cpp
288 endif
289 ifdef VBOX_WITH_VMSVGA3D
290 if1of ($(KBUILD_TARGET), linux win)
291# Dynamically load 3D library (opengl32, libGL).
292# This is a temporary solution. In future the 3D backend will be in a separate library.
293VBOX_WITH_VMSVGA3D_DYNAMIC_LOAD = 1
294 endif
295 VBoxDD_DEFS += VBOX_WITH_VMSVGA3D
296 VBoxDD_SOURCES += \
297 Graphics/DevVGA-SVGA3d.cpp \
298 Graphics/DevVGA-SVGA3d-hlp.cpp \
299 Graphics/DevVGA-SVGA3d-info.cpp \
300 Graphics/DevVGA-SVGA3d-shared.cpp \
301 Graphics/DevVGA-SVGA3d-savedstate.cpp
302 if "$(KBUILD_TARGET)" == "win" && !defined(VBOX_WITH_VMSVGA3D_USE_OPENGL)
303 VBoxDD_DEFS += VMSVGA3D_DIRECT3D
304 VBoxDD_SOURCES += \
305 Graphics/DevVGA-SVGA3d-win.cpp \
306 Graphics/DevVGA-SVGA3d-win-d3d9.cpp
307 VBoxDD_LIBS.win += d3d9.lib $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
308 VBoxDD_LDFLAGS.win += /DELAYLOAD:d3d9.dll
309 else
310 VBoxDD_DEFS += VMSVGA3D_OPENGL
311 VBoxDD_SOURCES += \
312 Graphics/DevVGA-SVGA3d-ogl.cpp \
313 Graphics/DevVGA-SVGA3d-glHlp.cpp \
314 $(VBoxDD_0_OUTDIR)/VBoxSVGA3DLazyLoad.asm
315 VBoxDD_SOURCES.darwin += \
316 $(VBoxDD_0_OUTDIR)/VBoxSVGA3DObjCLazyLoad.asm
317 VBoxDD_CLEAN += $(VBoxDD_0_OUTDIR)/VBoxSVGA3DLazyLoad.asm
318 $$(VBoxDD_0_OUTDIR)/VBoxSVGA3DLazyLoad.asm: $(PATH_SUB_CURRENT)/Graphics/VBoxSVGA3D.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
319 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxDD,$(filter %.def, $^),$@)
320 $(QUIET)$(RM) -f -- "$@"
321 $(VBOX_DEF_2_LAZY_LOAD) --explicit-load-function --library VBoxSVGA3D --output "$@" $(filter %.def, $^)
322 $$(VBoxDD_0_OUTDIR)/VBoxSVGA3DObjCLazyLoad.asm: $(PATH_SUB_CURRENT)/Graphics/VBoxSVGA3DObjC.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
323 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxDD,$(filter %.def, $^),$@)
324 $(QUIET)$(RM) -f -- "$@"
325 $(VBOX_DEF_2_LAZY_LOAD) --explicit-load-function --library VBoxSVGA3DObjC --output "$@" $(filter %.def, $^)
326
327 ifdef VBOX_WITH_VMSVGA3D_DYNAMIC_LOAD
328 VBoxDD_DEFS += VMSVGA3D_DYNAMIC_LOAD
329 VBoxDD_SOURCES += \
330 Graphics/DevVGA-SVGA3d-glLdr.cpp
331 else
332 VBoxDD_LIBS.linux += X11 GL
333 VBoxDD_LIBS.win += $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/Opengl32.lib
334 endif
335 VBoxDD_LDFLAGS.darwin += -framework OpenGL
336 VBoxDD_DEFS.darwin += VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE
337 if 0 # Use the OpenGL 3.2 Core profile (see also VBoxSVGA3D_DEFS.darwin and VBoxSVGA3DObjC_DEFS.darwin).
338 VBoxDD_DEFS.darwin += VBOX_VMSVGA3D_DEFAULT_OGL_PROFILE=3.2 VBOX_VMSVGA3D_OTHER_OGL_PROFILE=2.1
339 else
340 VBoxDD_DEFS.darwin += VBOX_VMSVGA3D_DEFAULT_OGL_PROFILE=2.1 VBOX_VMSVGA3D_OTHER_OGL_PROFILE=3.2
341 endif
342 endif
343 if1of ($(VBOX_DEF_MACOSX_VERSION_MIN), 10.6 10.5 10.4)
344 Graphics/DevVGA-SVGA3d.cpp_CXXFLAGS.darwin = -F$(VBOX_PATH_MACOSX_SDK_10_7)/System/Library/Frameworks/
345 Graphics/DevVGA-SVGA3d-info.cpp_CXXFLAGS.darwin = -F$(VBOX_PATH_MACOSX_SDK_10_7)/System/Library/Frameworks/
346 Graphics/DevVGA-SVGA3d-shared.cpp_CXXFLAGS.darwin = -F$(VBOX_PATH_MACOSX_SDK_10_7)/System/Library/Frameworks/
347 Graphics/DevVGA-SVGA3d-savedstate.cpp_CXXFLAGS.darwin = -F$(VBOX_PATH_MACOSX_SDK_10_7)/System/Library/Frameworks/
348 Graphics/DevVGA-SVGA3d-ogl.cpp_CXXFLAGS.darwin = -F$(VBOX_PATH_MACOSX_SDK_10_7)/System/Library/Frameworks/
349 endif
350 endif
351
352 ifdef VBOX_WITH_VDMA
353 VBoxDD_DEFS += VBOX_WITH_VDMA
354 VBoxDD_SOURCES += \
355 Graphics/DevVGA_VDMA.cpp
356 endif
357
358 ifdef VBOX_WITH_PXE_ROM
359 VBoxDD_DEFS += VBOX_WITH_PXE_ROM
360 endif
361
362 # --- USB bits. ---
363
364 ifdef VBOX_WITH_USB
365 VBoxDD_DEFS += VBOX_WITH_USB
366 VBoxDD_SOURCES += \
367 USB/vrdp/USBProxyDevice-vrdp.cpp \
368 USB/usbip/USBProxyDevice-usbip.cpp
369
370 VBoxDD_DEFS.darwin += VUSB_HAVE_USBPROXY_DEVICE
371 VBoxDD_SOURCES.darwin += \
372 USB/USBProxyDevice.cpp \
373 USB/darwin/USBProxyDevice-darwin.cpp
374
375 VBoxDD_DEFS.linux += \
376 VUSB_HAVE_USBPROXY_DEVICE \
377 $(if $(VBOX_WITH_LINUX_COMPILER_H),VBOX_WITH_LINUX_COMPILER_H,) \
378 $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,)
379 VBoxDD_SOURCES.linux += \
380 USB/USBProxyDevice.cpp \
381 USB/linux/USBProxyDevice-linux.cpp
382
383 VBoxDD_DEFS.os2 += VUSB_HAVE_USBPROXY_DEVICE
384 VBoxDD_INCS.os2 += $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
385 VBoxDD_SOURCES.os2 += \
386 USB/USBProxyDevice.cpp \
387 USB/os2/USBProxyDevice-os2.cpp
388
389 VBoxDD_DEFS.win += VUSB_HAVE_USBPROXY_DEVICE
390 VBoxDD_SOURCES.win += \
391 USB/USBProxyDevice.cpp \
392 USB/win/USBProxyDevice-win.cpp
393
394 VBoxDD_DEFS.solaris += VUSB_HAVE_USBPROXY_DEVICE
395 VBoxDD_SOURCES.solaris+= \
396 USB/USBProxyDevice.cpp \
397 USB/solaris/USBProxyDevice-solaris.cpp
398
399 VBoxDD_DEFS.freebsd += VUSB_HAVE_USBPROXY_DEVICE
400 VBoxDD_SOURCES.freebsd+= \
401 USB/USBProxyDevice.cpp \
402 USB/freebsd/USBProxyDevice-freebsd.cpp
403
404 ifdef VBOX_WITH_SCSI
405 VBoxDD_SOURCES += \
406 Storage/UsbMsd.cpp
407 endif
408
409 if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
410 VBoxDD_DEFS += VBOX_WITH_EHCI_IMPL
411 VBoxDD_SOURCES += \
412 USB/DevEHCI.cpp
413 endif
414
415 if defined(VBOX_WITH_XHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
416 VBoxDD_DEFS += VBOX_WITH_XHCI_IMPL
417 VBoxDD_SOURCES += \
418 USB/DevXHCI.cpp
419 endif
420
421 if defined(VBOX_WITH_USB_VIDEO_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
422 if1of ($(KBUILD_TARGET), linux)
423 VBoxDD_DEFS += VBOX_WITH_USB_VIDEO_IMPL
424 VBoxDD_SOURCES += \
425 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/UsbWebcam.cpp \
426 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/UsbWebcamDesc.cpp \
427 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/jpggen.cpp \
428 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/DrvHostWebcam/DrvHostWebcam.cpp \
429 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/DrvHostWebcam/JPEGEnc.cpp
430 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/DrvHostWebcam/JPEGEnc.cpp_INCS = \
431 $(VBOX_JPEG_INCS)
432 VBoxDD_SOURCES.linux += \
433 $(PATH_ROOT)/src/VBox/ExtPacks/Puel/UsbWebcam/DrvHostWebcam/HostWebcam-v4l2.cpp
434 VBoxDD_LIBS += \
435 $(PATH_STAGE_LIB)/VBox-libjpeg$(VBOX_SUFF_LIB)
436 endif
437 endif
438
439 endif # VBOX_WITH_USB
440
441 ifdef VBOX_WITH_VUSB
442 VBoxDD_DEFS += VBOX_WITH_VUSB
443 VBoxDD_SOURCES += \
444 USB/DevOHCI.cpp \
445 USB/DrvVUSBRootHub.cpp \
446 USB/VUSBDevice.cpp \
447 USB/VUSBSniffer.cpp \
448 USB/VUSBSnifferPcapNg.cpp \
449 USB/VUSBSnifferUsbMon.cpp \
450 USB/VUSBSnifferVmx.cpp \
451 USB/VUSBUrb.cpp \
452 USB/VUSBUrbPool.cpp \
453 USB/VUSBUrbTrace.cpp
454 endif
455
456 # --- Networking bits. ---
457
458 ifdef VBOX_WITH_INIP
459 ifndef LWIP_SOURCES
460 include $(PATH_SUB_CURRENT)/Network/lwip-new/Config.kmk
461 endif
462 VBoxDD_DEFS += VBOX_WITH_INIP
463 VBoxDD_SOURCES += \
464 Network/DevINIP.cpp \
465 $(addprefix Network/lwip-new/,$(LWIP_SOURCES))
466 VBoxDD_INCS += \
467 Network \
468 $(addprefix Network/lwip-new/,$(LWIP_INCS))
469 endif # VBOX_WITH_INIP
470
471 ifdef VBOX_WITH_E1000
472 VBoxDD_DEFS += VBOX_WITH_E1000
473 VBoxDD_SOURCES += \
474 Network/DevE1000.cpp \
475 Network/DevE1000Phy.cpp \
476 Network/DevEEPROM.cpp
477 endif
478
479 ifdef VBOX_WITH_VIRTIO
480 VBoxDD_DEFS += VBOX_WITH_VIRTIO
481 VBoxDD_SOURCES += \
482 VirtIO/Virtio.cpp \
483 VirtIO/VirtioCore.cpp \
484 Network/DevVirtioNet.cpp
485 endif
486
487 if defined(VBOX_WITH_VIRTIO) && defined(VBOX_WITH_VIRTIO_NET_1_0)
488 VBoxDD_DEFS += VBOX_WITH_VIRTIO_NET_1_0
489 VBoxDD_SOURCES += \
490 Network/DevVirtioNet_1_0.cpp
491endif
492
493 ifdef VBOX_WITH_UDPTUNNEL
494 VBoxDD_DEFS += VBOX_WITH_UDPTUNNEL
495 VBoxDD_SOURCES += \
496 Network/DrvUDPTunnel.cpp
497 endif
498
499 ifdef VBOX_WITH_VDE
500 VBoxDD_DEFS += VBOX_WITH_VDE
501 VBoxDD_SOURCES += \
502 Network/DrvVDE.cpp \
503 Network/VDEPlug.cpp
504 endif
505
506 ifdef VBOX_WITH_NETSHAPER
507 VBoxDD_DEFS += VBOX_WITH_NETSHAPER
508 VBoxDD_SOURCES += \
509 Network/DrvNetShaper.cpp
510 endif
511
512 # --- Storage bits. ---
513
514 ifdef VBOX_WITH_AHCI
515 VBoxDD_DEFS += VBOX_WITH_AHCI IN_AHCI_R3
516 VBoxDD_SOURCES += \
517 Storage/DevAHCI.cpp
518 endif
519
520 ifdef VBOX_WITH_BUSLOGIC
521 VBoxDD_DEFS += VBOX_WITH_BUSLOGIC
522 VBoxDD_SOURCES += \
523 Storage/DevBusLogic.cpp \
524 Storage/VBoxSCSI.cpp
525 endif
526
527 ifdef VBOX_WITH_LSILOGIC
528 VBoxDD_DEFS += VBOX_WITH_LSILOGIC
529 VBoxDD_SOURCES += \
530 Storage/DevLsiLogicSCSI.cpp
531 endif
532
533 if defined(VBOX_WITH_NVME_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
534 VBoxDD_DEFS += VBOX_WITH_NVME_IMPL
535 VBoxDD_SOURCES += \
536 Storage/DevNVMe.cpp
537 endif
538
539 if defined(VBOX_WITH_VIRTIO) && defined(VBOX_WITH_VIRTIO_SCSI)
540 VBoxDD_DEFS += VBOX_WITH_VIRTIO_SCSI
541 VBoxDD_SOURCES += \
542 Storage/DevVirtioSCSI.cpp
543 endif
544
545 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
546 VBoxDD_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
547 endif
548
549 ifdef VBOX_WITH_SCSI
550 VBoxDD_DEFS += VBOX_WITH_SCSI
551 VBoxDD_SOURCES += \
552 Storage/DrvSCSI.cpp
553 endif
554
555 ifdef VBOX_WITH_ISCSI
556 $(eval $(call def_vbox_lwip_flags, \
557 VBoxDD, Storage/DrvVD.cpp, Network/lwip-new))
558 endif
559
560 ifdef VBOX_WITH_DRV_DISK_INTEGRITY
561 VBoxDD_DEFS += VBOX_WITH_DRV_DISK_INTEGRITY
562 VBoxDD_SOURCES += \
563 Storage/DrvDiskIntegrity.cpp \
564 Storage/DrvRamDisk.cpp
565 endif
566
567 ifdef VBOX_WITH_EFI
568 VBoxDD_DEFS += VBOX_WITH_EFI
569 VBoxDD_SOURCES += EFI/DevEFI.cpp
570 EFI/DevEFI.cpp_INCS += EFI/Firmware/BaseTools/Source/C/Include
571 EFI/DevEFI.cpp_INCS.x86 += EFI/Firmware/BaseTools/Source/C/Include/Ia32
572 EFI/DevEFI.cpp_INCS.amd64 += EFI/Firmware/BaseTools/Source/C/Include/X64
573 endif
574
575 if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
576 VBoxDD_DEFS += VBOX_WITH_PCI_PASSTHROUGH_IMPL
577 VBoxDD_SOURCES += \
578 Bus/DevPciRaw.cpp \
579 Bus/DrvPciRaw.cpp
580 endif
581
582 ifdef VBOX_WITH_MSI_DEVICES
583 VBoxDD_DEFS += VBOX_WITH_MSI_DEVICES
584 endif
585
586 ifdef VBOX_WITH_DYNAMIC_DSDT
587 VBoxDD_DEFS += VBOX_WITH_DYNAMIC_DSDT
588 endif
589
590 # --- Audio bits (see also VBOX_AUDIO_DEFS in ./Config.kmk). ---
591
592 VBoxDD_DEFS += $(VBOX_AUDIO_DEFS)
593 VBoxDD_SOURCES += \
594 Audio/DevIchAc97.cpp \
595 Audio/DevSB16.cpp \
596 Audio/DevHDA.cpp \
597 Audio/DevHDACommon.cpp \
598 Audio/HDACodec.cpp \
599 Audio/HDAStream.cpp \
600 Audio/HDAStreamChannel.cpp \
601 Audio/HDAStreamMap.cpp \
602 Audio/HDAStreamPeriod.cpp \
603 Audio/AudioMixBuffer.cpp \
604 Audio/AudioMixer.cpp \
605 Audio/DrvAudio.cpp \
606 Audio/DrvAudioCommon.cpp \
607 Audio/DrvHostNullAudio.cpp
608
609 ifdef VBOX_WITH_AUDIO_DEBUG
610 VBoxDD_DEFS += VBOX_WITH_AUDIO_DEBUG
611 VBoxDD_SOURCES += \
612 Audio/DrvHostDebugAudio.cpp
613 endif
614
615 ifdef VBOX_WITH_AUDIO_VALIDATIONKIT
616 VBoxDD_DEFS += VBOX_WITH_AUDIO_VALIDATIONKIT
617 VBoxDD_SOURCES += \
618 Audio/DrvHostValidationKit.cpp
619 endif
620
621 ifeq ($(KBUILD_TARGET),darwin)
622 VBoxDD_SOURCES += \
623 Audio/DrvHostCoreAudio.cpp
624 endif
625
626 ifeq ($(KBUILD_TARGET),win)
627 VBoxDD_SOURCES += \
628 Audio/DrvHostDSound.cpp
629 ifdef VBOX_WITH_AUDIO_MMNOTIFICATION_CLIENT
630 VBoxDD_SOURCES += \
631 Audio/VBoxMMNotificationClient.cpp
632 VBoxDD_DEFS += VBOX_WITH_AUDIO_MMNOTIFICATION_CLIENT
633 endif
634 endif
635
636 ifdef VBOX_WITH_AUDIO_OSS
637 VBoxDD_DEFS += VBOX_WITH_AUDIO_OSS
638 VBoxDD_SOURCES += \
639 Audio/DrvHostOSSAudio.cpp
640 endif
641
642 ifdef VBOX_WITH_AUDIO_ALSA
643 VBoxDD_DEFS += VBOX_WITH_AUDIO_ALSA
644 VBoxDD_SOURCES += \
645 Audio/DrvHostALSAAudio.cpp \
646 Audio/alsa_stubs.c
647 endif
648
649 ifdef VBOX_WITH_AUDIO_PULSE
650 VBoxDD_DEFS += VBOX_WITH_AUDIO_PULSE
651 VBoxDD_SOURCES += \
652 Audio/DrvHostPulseAudio.cpp \
653 Audio/pulse_stubs.c
654 endif
655
656 # --- WARNING! SLIRP MESS AHEAD! ;-) ---
657 VBOX_SLIRP_SOURCES = \
658 Network/DrvNAT.cpp \
659 Network/slirp/bootp.c \
660 Network/slirp/debug.c \
661 Network/slirp/ip_icmp.c \
662 Network/slirp/ip_input.c \
663 Network/slirp/ip_output.c \
664 Network/slirp/misc.c \
665 Network/slirp/sbuf.c \
666 Network/slirp/slirp.c \
667 Network/slirp/slirp_dns.c \
668 Network/slirp/socket.c \
669 Network/slirp/tcp_input.c \
670 Network/slirp/tcp_output.c \
671 Network/slirp/tcp_subr.c \
672 Network/slirp/tcp_timer.c \
673 Network/slirp/udp.c \
674 Network/slirp/hostres.c \
675 Network/slirp/dnsproxy/hash.c \
676 Network/slirp/tftp.c \
677 Network/slirp/dnsproxy/dnsproxy.c
678
679 ifeq ($(KBUILD_TARGET), win)
680 VBOX_SLIRP_SOURCES += Network/slirp/ip_icmpwin.c
681 else ifneq ($(KBUILD_TARGET),darwin)
682 # helper for debugging unprivileged
683# Network/slirp/ip_icmp.c_DEFS += VBOX_RAWSOCK_DEBUG_HELPER
684# VBOX_SLIRP_SOURCES += ../NetworkServices/NAT/getrawsock.c
685 endif
686
687 ifneq ($(KBUILD_TARGET), win)
688 VBOX_SLIRP_SOURCES += Network/slirp/resolv_conf_parser.c
689 endif
690
691 VBOX_SLIRP_BSD_ARCH = $(subst x86,i386,$(KBUILD_TARGET_ARCH))
692 VBOX_SLIRP_BSD_SOURCES += \
693 Network/slirp/bsd/kern/kern_mbuf.c \
694 Network/slirp/bsd/kern/uipc_mbuf.c \
695 Network/slirp/bsd/kern/uipc_mbuf2.c \
696 Network/slirp/bsd/$(VBOX_SLIRP_BSD_ARCH)/in_cksum.c
697 VBOX_SLIRP_ALIAS_SOURCES = \
698 Network/slirp/libalias/alias.c \
699 Network/slirp/libalias/alias_db.c \
700 Network/slirp/libalias/alias_mod.c \
701 Network/slirp/libalias/alias_proxy.c \
702 Network/slirp/libalias/alias_ftp.c \
703 Network/slirp/libalias/alias_nbt.c \
704 Network/slirp/libalias/alias_util.c
705
706 # Enable VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER here for a while, then move to
707 # $(file)_DEFS or clean the code disabled with this definition.
708 VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER=1
709
710 # dump memory related operations.
711 Network/slirp/misc.c_DEFS += $(if $(VBOX_NAT_MEM_DEBUG),VBOX_NAT_MEM_DEBUG,)
712
713 VBoxDD_SOURCES += $(VBOX_SLIRP_SOURCES)
714 define def_vbox_slirp_cflags
715 $(file)_DEFS += \
716 $(if $(VBOX_WITH_SLIRP_MEMORY_CHECK),RTMEM_WRAP_TO_EF_APIS,) \
717 $(if $(VBOX_WITH_DEBUG_NAT_SOCKETS),VBOX_WITH_DEBUG_NAT_SOCKETS,) \
718 $(if $(VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER),VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER,) \
719 $(if $(VBOX_WITH_NAT_SEND2HOME),VBOX_WITH_NAT_SEND2HOME,) \
720 $(if $(VBOX_WITH_HIDDEN_TCPTEMPLATE),VBOX_WITH_HIDDEN_TCPTEMPLATE,) \
721 $(if $(VBOX_WITH_SLIRP_MT),VBOX_WITH_SLIRP_MT,)
722 $(file)_INCS += \
723 $(1)/slirp/bsd/sys \
724 $(1)/slirp/bsd/sys/sys \
725 $(1)/slirp/bsd/$(VBOX_SLIRP_BSD_ARCH)/include \
726 $(1)/slirp/bsd/netinet \
727 $(1)/slirp \
728 $(1)/slirp/libalias
729 ifeq ($(KBUILD_TARGET),win)
730 $(file)_CFLAGS = -wd4018
731 else
732 $(file)_CFLAGS += -Wno-sign-compare -Wno-format -Wno-bad-function-cast
733 endif
734 endef
735
736 $(foreach file,$(VBOX_SLIRP_SOURCES),$(eval $(call def_vbox_slirp_cflags, Network)))
737
738 VBoxDD_SOURCES += $(VBOX_SLIRP_ALIAS_SOURCES)
739 define def_vbox_slirp_alias_cflags
740 $(file)_DEFS += VBOX_SLIRP_ALIAS \
741 $(if $(VBOX_WITH_DEBUG_LIBALIAS),VBOX_WITH_DEBUG_LIBALIAS,)
742 $(file)_INCS += \
743 $(1)/slirp/libalias \
744 $(1)/slirp \
745 $(1)/slirp/dnsproxy
746 ifneq ($(KBUILD_TARGET),win)
747 $(file)_CFLAGS += -Wno-shadow
748 endif
749 endef
750 $(foreach file,$(VBOX_SLIRP_ALIAS_SOURCES),$(eval $(call def_vbox_slirp_cflags, Network)))
751 $(foreach file,$(VBOX_SLIRP_ALIAS_SOURCES),$(eval $(call def_vbox_slirp_alias_cflags, Network)))
752
753 VBOX_SLIRP_BSD_SOURCES += $(VBOX_SLIRP_BSD_SOURCES.${KBUILD_TARGET_ARCH})
754 VBoxDD_SOURCES += $(VBOX_SLIRP_BSD_SOURCES)
755 define def_vbox_slirp_bsd_cflags
756 $(file)_DEFS += VBOX_SLIRP_BSD
757 $(file)_INCS += $(1)/slirp/dnsproxy
758 endef
759 $(foreach file,$(VBOX_SLIRP_BSD_SOURCES),$(eval $(call def_vbox_slirp_cflags, Network)))
760 $(foreach file,$(VBOX_SLIRP_BSD_SOURCES),$(eval $(call def_vbox_slirp_bsd_cflags, Network)))
761
762
763 # --- OS specific driver hacks. ---
764
765 ifeq ($(KBUILD_TARGET),freebsd)
766 VBoxDD_SOURCES.freebsd += Network/DrvTAP.cpp
767 endif # freebsd
768
769 VBoxDD_SOURCES.linux += \
770 Network/DrvTAP.cpp \
771 Parallel/DrvHostParallel.cpp
772
773 ifeq ($(KBUILD_TARGET),solaris)
774 ifdef VBOX_WITH_SUID_WRAPPER
775 VBoxDD_DEFS += VBOX_WITH_SUID_WRAPPER
776 endif
777 endif
778
779 VBoxDD_DEFS.win += VBOX_WITH_WIN_PARPORT_SUP
780 VBoxDD_SOURCES.win += \
781 Parallel/DrvHostParallel.cpp
782
783 ifdef VBOX_WITH_VIRTUALKD
784 VBoxDD_DEFS.win += VBOX_WITH_VIRTUALKD
785 VBoxDD_SOURCES.win += \
786 Misc/DevVirtualKD.cpp
787 endif
788
789 if defined(VBOX_WITH_NETFLT)
790 VBoxDD_DEFS += VBOX_WITH_NETFLT
791 if defined(VBOX_NETFLT_ONDEMAND_BIND)
792 VBoxDD_DEFS.win += VBOX_NETFLT_ONDEMAND_BIND
793 endif
794 endif
795
796 # --- Final bits, mostly libraries for order dependant linkers. ---
797
798 VBoxDD_LIBS += \
799 $(PATH_STAGE_LIB)/VgaDefBiosLogo$(VBOX_SUFF_LIB) \
800 $(LIB_VMM) \
801 $(LIB_RUNTIME)
802 ifeq ($(KBUILD_TARGET),win)
803 VBoxDD_LIBS += \
804 $(LIB_DDU) \
805 $(PATH_STAGE_LIB)/VBoxDD2.lib \
806 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/dxguid.lib
807 else
808 VBoxDD_LIBS += \
809 $(VBoxDDU_1_STAGE_TARGET) \
810 $(VBoxDD2_1_STAGE_TARGET)
811 endif
812
813 ifdef VBOX_WITH_NETFLT
814 VBoxDD_LIBS.win += $(PATH_STAGE_LIB)/WinNetConfig.lib
815 endif
816
817 ifeq ($(KBUILD_TARGET),solaris)
818 VBoxDD_LIBS += adm
819 ifdef VBOX_WITH_SUID_WRAPPER
820 VBoxDD_LIBS += secdb
821 endif
822 ifdef VBOX_WITH_USB
823 VBoxDD_LIBS += aio
824 endif
825 endif
826
827 VBoxDD_LIBS.darwin += \
828 $(LIB_REM)
829
830
831 ifdef VBOX_WITH_DYNAMIC_DSDT
832 VBoxDD_CLEAN += $(VBoxDD_0_OUTDIR)/vboxdsl.hex
833 PC/ACPI/VBoxAcpi.cpp_DEPS = $(VBoxDD_0_OUTDIR)/vboxdsl.hex
834
835 $$(VBoxDD_0_OUTDIR)/vboxdsl.hex: $(PATH_SUB_CURRENT)/PC/vbox.dsl | $$(dir $$@)
836 $(call MSG_TOOL,bin2c,VBoxDD,$<,$@)
837 $(QUIET)$(VBOX_BIN2C) -export VboxDslSource $< $@
838
839 vboxdsl.hex:: $$(VBoxDD_0_OUTDIR)/vboxdsl.hex
840
841 else # !VBOX_WITH_DYNAMIC_DSDT
842 # VBoxAcpi.cpp needs vboxaml.hex which we generate from PC/vbox.dsl
843 VBoxDD_CLEAN += \
844 $(VBoxDD_0_OUTDIR)/vboxaml.hex \
845 $(VBoxDD_0_OUTDIR)/vboxaml.aml \
846 $(VBoxDD_0_OUTDIR)/vboxaml.aml.tmp \
847 $(VBoxDD_0_OUTDIR)/vboxssdt_standard.hex \
848 $(VBoxDD_0_OUTDIR)/vboxssdt_standard.aml \
849 $(VBoxDD_0_OUTDIR)/vboxssdt_standard.aml.tmp \
850 $(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.hex \
851 $(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.aml \
852 $(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.aml.tmp \
853 $(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.aml.pre
854 PC/ACPI/VBoxAcpi.cpp_DEPS = \
855 $(VBoxDD_0_OUTDIR)/vboxaml.hex \
856 $(VBoxDD_0_OUTDIR)/vboxssdt_standard.hex \
857 $(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.hex
858
859 $$(VBoxDD_0_OUTDIR)/vboxaml.hex: $(PATH_SUB_CURRENT)/PC/vbox.dsl | $$(dir $$@)
860 $(call MSG_TOOL,iasl,VBoxDD,$<,$@)
861 $(QUIET)$(VBOX_IASLCMD) -tc -vs -p $@ $<
862 $(QUIET)$(MV) -f $@ $@.tmp
863 $(QUIET)$(SED) -e "s/vboxaml_aml_code/AmlCode/g" \
864 --output $@ $@.tmp
865 $(QUIET)$(RM) -f $@.tmp
866
867 vboxaml.hex:: $$(VBoxDD_0_OUTDIR)/vboxaml.hex
868
869 $$(VBoxDD_0_OUTDIR)/vboxssdt_standard.hex: $(PATH_SUB_CURRENT)/PC/vbox-standard.dsl | $$(dir $$@)
870 $(call MSG_TOOL,iasl,VBoxDD,$<,$@)
871 $(QUIET)$(RM) -f $@ $@.tmp
872 $(QUIET)$(VBOX_IASLCMD) -tc -vs -p $@ $<
873 $(QUIET)$(MV) -f $@ $@.tmp
874 $(QUIET)$(SED) -e "s/AmlCode\|vboxssdt_standard_aml_code/AmlCodeSsdtStandard/g" \
875 --output $@ $@.tmp
876 $(QUIET)$(RM) -f $@.tmp
877
878
879 vboxssdt_standard.hex:: $$(VBoxDD_0_OUTDIR)/vboxssdt_standard.hex
880
881 $$(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.hex: $(PATH_SUB_CURRENT)/PC/vbox-cpuhotplug.dsl | $$(dir $$@)
882 $(call MSG_TOOL,iasl,VBoxDD,$<,$@)
883 $(QUIET)$(RM) -f $@ $@.tmp $@.pre
884 $(QUIET)$(TOOL_$(VBOX_GCC_TOOL)_CC) -E -P -x c -o $@.pre $<
885 $(QUIET)$(SED) -e "s/<NL>/\n/g" \
886 --output $@.pre1 $@.pre
887 $(QUIET)$(VBOX_IASLCMD) -tc -vs -p $@ $@.pre1
888 $(QUIET)$(MV) -f $@ $@.tmp
889 $(QUIET)$(SED) -e "s/AmlCode\|vboxssdt_cpuhotplug_aml_code/AmlCodeSsdtCpuHotPlug/g" \
890 --output $@ $@.tmp
891 $(QUIET)$(RM) -f $@.tmp $@.pre $@.pre1
892
893
894 vboxssdt_cpuhotplug.hex:: $$(VBoxDD_0_OUTDIR)/vboxssdt_cpuhotplug.hex
895
896 endif # !VBOX_WITH_DYNAMIC_DSDT
897 PC/ACPI/VBoxAcpi.cpp_INCS = $(VBoxDD_0_OUTDIR)
898
899 # For finding PCIInternal.h from VBox/pci.h.
900 Bus/DevPCI.cpp_INCS = Bus
901 Bus/DevPciIch9.cpp_INCS = Bus
902 Bus/MsiCommon.cpp_INCS = Bus
903 Bus/MsixCommon.cpp_INCS = Bus
904 Bus/DevPciRaw.cpp_INCS = Bus
905
906 # For finding and generating vbetables.h (see Graphics/BIOS/Makefile.kmk).
907 Graphics/DevVGA.cpp_INCS = $(VgaBiosBin_0_OUTDIR) $(VBOX_GRAPHICS_INCS)
908 Graphics/DevVGA.cpp_DEPS = $(VgaBiosBin_0_OUTDIR)/vbetables.h
909
910 $(call VBOX_SET_VER_INFO_DLL,VBoxDD,VirtualBox VMM Devices and Drivers) # (last!)
911
912
913 ifdef VBOX_WITH_RAW_MODE
914 #
915 # VBoxDDRC (sysmod)
916 #
917 VBoxDDRC_TEMPLATE = VBoxRc
918 ifeq ($(KBUILD_TARGET_ARCH),x86)
919 VBoxDDRC_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE
920 endif
921 VBoxDDRC_DEFS = $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) $(if $(VBOX_WITH_IOMMU_AMD),VBOX_WITH_IOMMU_AMD,)
922 VBoxDDRC_INCS = build $(VBOX_GRAPHICS_INCS)
923 VBoxDDRC_SOURCES = \
924 Bus/DevPCI.cpp \
925 Bus/DevPciIch9.cpp \
926 Bus/MsiCommon.cpp \
927 Bus/MsixCommon.cpp \
928 $(if $(VBOX_WITH_IOMMU_AMD),Bus/DevIommuAmd.cpp,) \
929 EFI/DevSmc.cpp \
930 Graphics/DevVGA.cpp \
931 Input/DevPS2.cpp \
932 Input/DevPS2K.cpp \
933 Input/DevPS2M.cpp \
934 PC/DevACPI.cpp \
935 PC/DevIoApic.cpp \
936 PC/DevPit-i8254.cpp \
937 PC/DevPIC.cpp \
938 PC/DevRTC.cpp \
939 PC/DevDMA.cpp \
940 PC/DevHPET.cpp \
941 Storage/DevATA.cpp \
942 Network/DevPCNet.cpp \
943 Serial/DevSerial.cpp \
944 Serial/DevOxPcie958.cpp \
945 Serial/UartCore.cpp \
946 Parallel/DevParallel.cpp \
947 VMMDev/VMMDev.cpp \
948 VMMDev/VMMDevTesting.cpp
949
950 VBoxDDRC_DEFS += $(VBOX_AUDIO_DEFS)
951 VBoxDDRC_SOURCES += \
952 Audio/DevHDA.cpp \
953 Audio/DevHDACommon.cpp \
954 Audio/DevIchAc97.cpp
955
956 VBoxDDRC_DEFS += \
957 $(if $(VBOX_WITH_HP_HDA),VBOX_WITH_HP_HDA,) \
958 $(if $(VBOX_WITH_INTEL_HDA),VBOX_WITH_INTEL_HDA,) \
959 $(if $(VBOX_WITH_NVIDIA_HDA),VBOX_WITH_NVIDIA_HDA,)
960
961 ifdef VBOX_WITH_E1000
962 VBoxDDRC_DEFS += VBOX_WITH_E1000
963 VBoxDDRC_SOURCES += \
964 Network/DevE1000.cpp \
965 Network/DevE1000Phy.cpp
966 endif
967
968 ifdef VBOX_WITH_VIRTIO
969 VBoxDDRC_DEFS += VBOX_WITH_VIRTIO
970 VBoxDDRC_SOURCES += \
971 VirtIO/Virtio.cpp \
972 VirtIO/VirtioCore.cpp \
973 Network/DevVirtioNet.cpp
974 endif
975
976 ifdef defined(VBOX_WITH_VIRTIO) && defined(VBOX_WITH_VIRTIO_NET_1_0)
977 VBoxDDRC_DEFS += VBOX_WITH_VIRTIO_NET_1_0
978 VBoxDDRC_SOURCES += \
979 Network/DevVirtioNet_1_0.cpp
980 endif
981
982 ifdef VBOX_WITH_HGSMI
983 VBoxDDRC_DEFS += VBOX_WITH_HGSMI
984 endif
985 ifdef VBOX_WITH_WDDM
986 VBoxDDRC_DEFS += VBOX_WITH_WDDM
987 endif
988 ifdef VBOX_WITH_VDMA
989 VBoxDDRC_DEFS += VBOX_WITH_VDMA
990 endif
991 ifdef VBOXWDDM_WITH_VBVA
992 VBoxDDRC_DEFS += VBOXWDDM_WITH_VBVA
993 endif
994 ifdef VBOX_WITH_VMSVGA
995 VBoxDDRC_DEFS += VBOX_WITH_VMSVGA
996 VBoxDDRC_SOURCES += \
997 Graphics/DevVGA-SVGA.cpp
998 endif
999 ifdef VBOX_WITH_VMSVGA3D
1000 VBoxDDRC_DEFS += VBOX_WITH_VMSVGA3D
1001 endif
1002
1003 ifdef VBOX_WITH_VUSB
1004 VBoxDDRC_DEFS += VBOX_WITH_VUSB
1005 VBoxDDRC_SOURCES += \
1006 USB/DevOHCI.cpp
1007 endif
1008
1009 ifdef VBOX_WITH_USB
1010 VBoxDDRC_DEFS += VBOX_WITH_USB
1011 if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1012 VBoxDDRC_DEFS += VBOX_WITH_EHCI_IMPL
1013 VBoxDDRC_SOURCES += \
1014 USB/DevEHCI.cpp
1015 endif
1016 if defined(VBOX_WITH_XHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1017 VBoxDDRC_DEFS += VBOX_WITH_XHCI_IMPL
1018 VBoxDDRC_SOURCES += \
1019 USB/DevXHCI.cpp
1020 endif
1021 endif
1022
1023 ifdef VBOX_WITH_VIDEOHWACCEL
1024 VBoxDDRC_DEFS += VBOX_WITH_VIDEOHWACCEL
1025 endif
1026
1027 ifdef VBOX_WITH_AHCI
1028 VBoxDDRC_DEFS += VBOX_WITH_AHCI IN_AHCI_GC
1029 VBoxDDRC_SOURCES += \
1030 Storage/DevAHCI.cpp
1031 endif
1032
1033 ifdef VBOX_WITH_BUSLOGIC
1034 VBoxDDRC_DEFS += VBOX_WITH_BUSLOGIC
1035 VBoxDDRC_SOURCES += \
1036 Storage/DevBusLogic.cpp
1037 endif
1038
1039 ifdef VBOX_WITH_LSILOGIC
1040 VBoxDDRC_DEFS += VBOX_WITH_LSILOGIC
1041 VBoxDDRC_SOURCES += \
1042 Storage/DevLsiLogicSCSI.cpp
1043 endif
1044
1045 if defined(VBOX_WITH_NVME_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1046 VBoxDDGC_DEFS += VBOX_WITH_NVME_IMPL
1047 VBoxDDGC_SOURCES += \
1048 Storage/DevNVMe.cpp
1049 endif
1050
1051 if1of ($(VBOX_LDR_FMT32), pe lx)
1052 VBoxDDRC_LIBS = \
1053 $(PATH_STAGE_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \
1054 $(PATH_STAGE_LIB)/VMMRCImp$(VBOX_SUFF_LIB)
1055 endif
1056 $(call VBOX_SET_VER_INFO_RC,VBoxDDRC,VirtualBox VMM Devices and Drivers$(COMMA) raw-mode) # last!
1057 endif # VBOX_WITH_RAW_MODE
1058
1059
1060 #
1061 # VBoxDD2 (shared object)
1062 #
1063 VBoxDD2_TEMPLATE = VBoxR3DllWarnNoPic
1064 VBoxDD2_DEFS = \
1065 IN_VBOXDD2 \
1066 $(if $(VBOX_WITH_PXE_ROM),VBOX_WITH_PXE_ROM,) \
1067 $(if $(VBOX_WITH_NEW_LPC_DEVICE),VBOX_WITH_NEW_LPC_DEVICE,)
1068 VBoxDD2_INCS := \
1069 build \
1070 $(PATH_SUB_CURRENT)
1071 VBoxDD2_SOURCES = \
1072 build/VBoxDD2.cpp \
1073 $(if $(VBOX_WITH_NEW_LPC_DEVICE),,PC/DevLPC.cpp)
1074 VBoxDD2_LIBS = \
1075 $(PATH_STAGE_LIB)/PcBiosBin$(VBOX_SUFF_LIB) \
1076 $(PATH_STAGE_LIB)/VgaBiosBin$(VBOX_SUFF_LIB) \
1077 $(if $(VBOX_WITH_PXE_ROM),\
1078 $(if $(VBOX_WITH_INTEL_PXE),\
1079 $(PATH_STAGE_LIB)/NetBiosBin$(VBOX_SUFF_LIB),\
1080 $(PATH_STAGE_LIB)/iPxeBiosBin$(VBOX_SUFF_LIB)),) \
1081 $(LIB_VMM) \
1082 $(LIB_RUNTIME)
1083 VBoxDD2_LIBS.darwin += $(LIB_REM)
1084 VBoxDD2_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD2.dylib
1085 VBoxDD2_LDFLAGS.linux = $(VBOX_GCC_NO_UNDEFINED)
1086 if defined(VBOX_WITH_EFI) && !defined(VBOX_WITH_EFIFW_PACKING)
1087 VBoxDD_DEFS += VBOX_WITH_EFI_IN_DD2
1088 VBoxDD2_DEFS += VBOX_WITH_EFI
1089 VBoxDD2_SOURCES += \
1090 EFI/DevEFI-binaries.asm
1091 EFI/DevEFI-binaries.asm_ASINCS = $(PATH_STAGE)/$(INST_BIN)
1092 EFI/DevEFI-binaries.asm_DEPS = \
1093 $(PATH_STAGE)/$(INST_BIN)VBoxEFI32.fd \
1094 $(PATH_STAGE)/$(INST_BIN)VBoxEFI64.fd
1095 endif
1096
1097 $(call VBOX_SET_VER_INFO_DLL,VBoxDD2,VirtualBox VMM Devices and Drivers 2) # (last!)
1098
1099 #
1100 # VBoxDDR0 (sysmod)
1101 #
1102 VBoxDDR0_TEMPLATE = VBoxR0
1103 VBoxDDR0_DEFS = \
1104 $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
1105 $(if $(VBOX_WITH_IOMMU_AMD),VBOX_WITH_IOMMU_AMD,) \
1106 IN_RT_R0 # - WTF is IN_RT_R0 doing here?
1107 VBoxDDR0_DEFS.win += VBOX_WITH_WIN_PARPORT_SUP
1108 VBoxDDR0_INCS = build $(VBOX_GRAPHICS_INCS)
1109 VBoxDDR0_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
1110 VBoxDDR0_SOURCES = \
1111 build/VBoxDDR0.cpp \
1112 Bus/DevPCI.cpp \
1113 Bus/DevPciIch9.cpp \
1114 Bus/MsiCommon.cpp \
1115 Bus/MsixCommon.cpp \
1116 $(if $(VBOX_WITH_IOMMU_AMD),Bus/DevIommuAmd.cpp,) \
1117 EFI/DevSmc.cpp \
1118 EFI/DevFlash.cpp \
1119 EFI/FlashCore.cpp \
1120 Graphics/DevVGA.cpp \
1121 Input/DevPS2.cpp \
1122 Input/DevPS2K.cpp \
1123 Input/DevPS2M.cpp \
1124 PC/DevACPI.cpp \
1125 PC/DevIoApic.cpp \
1126 PC/DevPit-i8254.cpp \
1127 PC/DevPIC.cpp \
1128 PC/DevRTC.cpp \
1129 PC/DevDMA.cpp \
1130 PC/DevHPET.cpp \
1131 Storage/DevATA.cpp \
1132 Network/DevPCNet.cpp \
1133 Serial/DevSerial.cpp \
1134 Serial/DevOxPcie958.cpp \
1135 Serial/UartCore.cpp \
1136 Parallel/DevParallel.cpp \
1137 GIMDev/GIMDev.cpp \
1138 VMMDev/VMMDev.cpp \
1139 VMMDev/VMMDevTesting.cpp \
1140 Network/DrvIntNet.cpp \
1141 Network/DrvDedicatedNic.cpp
1142
1143 VBoxDDR0_SOURCES.win += Parallel/DrvHostParallel.cpp
1144
1145 VBoxDDR0_DEFS += \
1146 $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \
1147 $(if $(VBOX_WITH_WDDM),VBOX_WITH_WDDM,) \
1148 $(if $(VBOX_WITH_VDMA),VBOX_WITH_VDMA,) \
1149 $(if $(VBOXWDDM_WITH_VBVA),VBOXWDDM_WITH_VBVA,) \
1150 $(if $(VBOX_WITH_HP_HDA),VBOX_WITH_HP_HDA,) \
1151 $(if $(VBOX_WITH_INTEL_HDA),VBOX_WITH_INTEL_HDA,) \
1152 $(if $(VBOX_WITH_NVIDIA_HDA),VBOX_WITH_NVIDIA_HDA,)
1153
1154 VBoxDDR0_DEFS += $(VBOX_AUDIO_DEFS)
1155 VBoxDDR0_SOURCES += \
1156 Audio/DevHDA.cpp \
1157 Audio/DevHDACommon.cpp \
1158 Audio/DevIchAc97.cpp
1159
1160 ifdef VBOX_WITH_E1000
1161 VBoxDDR0_DEFS += VBOX_WITH_E1000
1162 VBoxDDR0_SOURCES += \
1163 Network/DevE1000.cpp \
1164 Network/DevE1000Phy.cpp
1165 endif
1166
1167 ifdef VBOX_WITH_VIRTIO
1168 VBoxDDR0_DEFS += VBOX_WITH_VIRTIO
1169 VBoxDDR0_SOURCES += \
1170 VirtIO/Virtio.cpp \
1171 VirtIO/VirtioCore.cpp \
1172 Network/DevVirtioNet.cpp
1173 endif
1174
1175 if defined(VBOX_WITH_VIRTIO) && defined(VBOX_WITH_VIRTIO_NET_1_0)
1176 VBoxDDR0_DEFS += VBOX_WITH_VIRTIO_NET_1_0
1177 VBoxDDR0_SOURCES += \
1178 Network/DevVirtioNet_1_0.cpp
1179 endif
1180
1181 ifdef VBOX_WITH_NETSHAPER
1182 VBoxDDR0_DEFS += VBOX_WITH_NETSHAPER
1183 VBoxDDR0_SOURCES += \
1184 Network/DrvNetShaper.cpp
1185 endif
1186
1187 ifdef VBOX_WITH_VMSVGA
1188 VBoxDDR0_DEFS += VBOX_WITH_VMSVGA
1189 VBoxDDR0_SOURCES += \
1190 Graphics/DevVGA-SVGA.cpp
1191 endif
1192 ifdef VBOX_WITH_VMSVGA3D
1193 VBoxDDR0_DEFS += VBOX_WITH_VMSVGA3D
1194 endif
1195
1196 ifdef VBOX_WITH_VUSB
1197 VBoxDDR0_DEFS += VBOX_WITH_VUSB
1198 VBoxDDR0_SOURCES += \
1199 USB/DevOHCI.cpp
1200 endif
1201 ifdef VBOX_WITH_USB
1202 VBoxDDR0_DEFS += VBOX_WITH_USB
1203 if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1204 VBoxDDR0_DEFS += VBOX_WITH_EHCI_IMPL
1205 VBoxDDR0_SOURCES += \
1206 USB/DevEHCI.cpp
1207 endif
1208 if defined(VBOX_WITH_XHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1209 VBoxDDR0_DEFS += VBOX_WITH_XHCI_IMPL
1210 VBoxDDR0_SOURCES += \
1211 USB/DevXHCI.cpp
1212 endif
1213 endif
1214
1215 ifdef VBOX_WITH_EFI
1216 VBoxDDR0_DEFS += VBOX_WITH_EFI
1217 VBoxDDR0_SOURCES += EFI/DevEFI.cpp
1218 endif
1219
1220 if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1221 VBoxDDR0_SOURCES += \
1222 Bus/DevPciRaw.cpp
1223 endif
1224
1225 ifdef VBOX_WITH_AHCI
1226 VBoxDDR0_DEFS += VBOX_WITH_AHCI IN_AHCI_R0
1227 VBoxDDR0_SOURCES += \
1228 Storage/DevAHCI.cpp
1229 endif
1230
1231 ifdef VBOX_WITH_BUSLOGIC
1232 VBoxDDR0_DEFS += VBOX_WITH_BUSLOGIC
1233 VBoxDDR0_SOURCES += \
1234 Storage/DevBusLogic.cpp
1235 endif
1236
1237 ifdef VBOX_WITH_LSILOGIC
1238 VBoxDDR0_DEFS += VBOX_WITH_LSILOGIC
1239 VBoxDDR0_SOURCES += \
1240 Storage/DevLsiLogicSCSI.cpp
1241 endif
1242
1243 if defined(VBOX_WITH_NVME_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
1244 VBoxDDR0_DEFS += VBOX_WITH_NVME_IMPL
1245 VBoxDDR0_SOURCES += \
1246 Storage/DevNVMe.cpp
1247 endif
1248
1249 if defined (VBOX_WITH_VIRTIO) && defined(VBOX_WITH_VIRTIO_SCSI)
1250 VBoxDDR0_DEFS += VBOX_WITH_VIRTIO_SCSI
1251 VBoxDDR0_SOURCES += \
1252 Storage/DevVirtioSCSI.cpp
1253 endif
1254
1255 ifdef VBOX_WITH_HGSMI
1256 VBoxDDR0_DEFS += VBOX_WITH_HGSMI
1257 endif
1258 ifdef VBOX_WITH_VIDEOHWACCEL
1259 VBoxDDR0_DEFS += VBOX_WITH_VIDEOHWACCEL
1260 endif
1261
1262 if1of ($(VBOX_LDR_FMT), pe lx)
1263 VBoxDDR0_LIBS = \
1264 $(PATH_STAGE_LIB)/VMMR0Imp$(VBOX_SUFF_LIB) \
1265 $(PATH_STAGE_LIB)/SUPR0$(VBOX_SUFF_LIB)
1266 endif
1267
1268 $(call VBOX_SET_VER_INFO_R0,VBoxDDR0,VirtualBox VMM Devices and Drivers$(COMMA) ring-0) # (last!)
1269
1270
1271 #
1272 # Ring-0 Services (library, linked into VMMR0.r0)
1273 #
1274 ServicesR0_TEMPLATE = VBoxR0
1275 ServicesR0_DEFS = VBOX_IN_VMM IN_INTNET_R0 IN_RT_R0 $(VMM_COMMON_DEFS) \
1276 $(if $(VBOX_WITH_PCI_PASSTHROUGH),IN_PCIRAW_R0,) \
1277 $(if $(VBOX_WITH_NAT_SERVICE),VBOX_WITH_NAT_SERVICE,)
1278 ServicesR0_SOURCES = \
1279 Network/SrvIntNetR0.cpp \
1280# $(if $(VBOX_WITH_PCI_PASSTHROUGH),Bus/SrvPciRawR0.cpp,)
1281 Network/SrvIntNetR0.cpp_CXXFLAGS := $(if-expr $(KBUILD_TARGET) == "win",,$(VBOX_GCC_Wno-array_bounds))
1282
1283
1284 #
1285 # Internal Networking - Ring-3 Testcase for the Ring-0 code (a bit hackish).
1286 #
1287 ifdef VBOX_WITH_TESTCASES
1288 PROGRAMS += tstIntNetR0
1289 tstIntNetR0_TEMPLATE = VBOXR3TSTEXE
1290 tstIntNetR0_DEFS = IN_INTNET_R0
1291 tstIntNetR0_SOURCES = \
1292 Network/testcase/tstIntNetR0.cpp
1293 ifneq ($(KBUILD_TARGET),win)
1294 Network/testcase/tstIntNetR0.cpp_CXXFLAGS = $(VBOX_GCC_Wno-array_bounds)
1295 endif
1296 endif
1297
1298
1299 #
1300 # Internal Networking - Ring-3 Testcase for the Ring-0 code (a bit hackish).
1301 #
1302 ifdef VBOX_WITH_TESTCASES
1303 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
1304 PROGRAMS += tstIntNetHardened-1
1305 tstIntNetHardened-1_TEMPLATE = VBoxR3HardenedTstExe
1306 tstIntNetHardened-1_NAME = tstIntNet-1
1307 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1308 tstIntNetHardened-1_DEFS = PROGRAM_NAME_STR="tstIntNet-1"
1309 else
1310 tstIntNetHardened-1_DEFS = PROGRAM_NAME_STR=\"tstIntNet-1\"
1311 endif
1312 tstIntNetHardened-1_SOURCES = ../HostDrivers/Support/SUPR3HardenedMainTemplateTestcase.cpp
1313
1314 DLLS += tstIntNet-1
1315 tstIntNet-1_TEMPLATE = VBoxR3HardenedTstDll
1316 else
1317 PROGRAMS += tstIntNet-1
1318 tstIntNet-1_TEMPLATE = VBOXR3TSTEXE
1319 endif
1320 tstIntNet-1_SOURCES = \
1321 Network/testcase/tstIntNet-1.cpp \
1322 Network/Pcap.cpp
1323 endif
1324
1325
1326 #
1327 # EEPROM device unit test requires cppunit
1328 #
1329 ifdef VBOX_WITH_CPPUNIT_TESTCASES
1330 ifdef VBOX_WITH_E1000
1331 PROGRAMS += tstDevEEPROM
1332 tstDevEEPROM_TEMPLATE = VBOXCPPUNITEXE
1333 tstDevEEPROM_SOURCES = \
1334 Network/testcase/tstDevEEPROM.cpp
1335 tstDevEEPROM_LIBS = \
1336 $(TARGET_VBoxDD)
1337 PROGRAMS += tstDevPhy
1338 tstDevPhy_TEMPLATE = VBOXCPPUNITEXE
1339 tstDevPhy_SOURCES = \
1340 Network/testcase/tstDevPhy.cpp \
1341 Network/DevE1000Phy.cpp
1342 tstDevPhy_DEFS = PHY_UNIT_TEST
1343 endif
1344 endif
1345
1346 #
1347 # Apple SMC Utility.
1348 #
1349 ifdef VBOX_WITH_TESTCASES
1350 PROGRAMS.darwin += VBoxSmcUtil-darwin
1351 VBoxSmcUtil-darwin_TEMPLATE = VBOXR3TSTEXE
1352 VBoxSmcUtil-darwin_SOURCES = EFI/VBoxSmcUtil-darwin.cpp
1353 VBoxSmcUtil-darwin_LDFLAGS = -framework IOKit
1354 endif
1355
1356 #
1357 # PDM device testcase framework.
1358 #
1359 ifdef VBOX_WITH_TESTCASES_TSTDEV
1360 PROGRAMS += tstDevice
1361 tstDevice_TEMPLATE = VBOXR3TSTEXE
1362 tstDevice_DEFS += IN_SUP_R3
1363 tstDevice_SOURCES = \
1364 testcase/tstDevice.cpp \
1365 testcase/tstDeviceCfg.cpp \
1366 testcase/tstDevicePdmDevHlp.cpp \
1367 testcase/tstDevicePdmThread.cpp \
1368 testcase/tstDeviceSsmFuzz.cpp
1369 endif
1370
1371endif # !VBOX_ONLY_EXTPACKS && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
1372
1373
1374if defined(VBOX_WITH_EXTPACK) && defined(VBOX_WITH_EXTPACK_PUEL) && defined(VBOX_WITH_EXTPACK_PUEL_BUILD) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
1375 #
1376 # The EHCI (USB 2.0) Extension Pack Modules.
1377 #
1378 if defined(VBOX_WITH_USB)
1379 DLLS += VBoxEhciR3
1380 VBoxEhciR3_TEMPLATE = VBoxR3ExtPackPuel
1381 VBoxEhciR3_SOURCES = \
1382 USB/DevEHCI.cpp \
1383 USB/DevXHCI.cpp
1384 $(call VBOX_SET_VER_INFO_DLL,VBoxEhciR3,PUEL Extension Pack - EHCI Device)
1385
1386 SYSMODS += VBoxEhciR0
1387 VBoxEhciR0_TEMPLATE = VBoxR0ExtPackPuel
1388 VBoxEhciR0_SOURCES = \
1389 USB/DevEHCI.cpp \
1390 USB/DevXHCI.cpp
1391 $(call VBOX_SET_VER_INFO_R0,VBoxEhciR0,PUEL Extension Pack - EHCI Device$(COMMA) ring-0)
1392
1393 ifdef VBOX_WITH_RAW_MODE
1394 SYSMODS += VBoxEhciRC
1395 VBoxEhciRC_TEMPLATE = VBoxRcExtPackPuel
1396 VBoxEhciRC_SOURCES = \
1397 USB/DevEHCI.cpp \
1398 USB/DevXHCI.cpp
1399 $(call VBOX_SET_VER_INFO_RC,VBoxEhciRC,PUEL Extension Pack - EHCI Device$(COMMA) raw-mode)
1400 endif
1401
1402 # Hacky but MSI support *must* be enabled
1403 ifdef VBOX_WITH_MSI_DEVICES
1404 VBoxEhciR3_DEFS += VBOX_WITH_MSI_DEVICES
1405 VBoxEhciR0_DEFS += VBOX_WITH_MSI_DEVICES
1406 VBoxEhciRC_DEFS += VBOX_WITH_MSI_DEVICES
1407 endif
1408
1409 endif
1410
1411 if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL)
1412 DLLS += VBoxPciRawR3
1413 VBoxPciRawR3_TEMPLATE = VBoxR3ExtPackPuel
1414 VBoxPciRawR3_SOURCES = Bus/DevPciRaw.cpp
1415 $(call VBOX_SET_VER_INFO_DLL,VBoxPciRawR3,PUEL Extension Pack - PCI Passthrough Device)
1416
1417 DLLS += VBoxPciRawDrv
1418 VBoxPciRawDrv_TEMPLATE = VBoxR3ExtPackPuel
1419 VBoxPciRawDrv_SOURCES = Bus/DrvPciRaw.cpp
1420 $(call VBOX_SET_VER_INFO_DLL,VBoxPciRawDrv,PUEL Extension Pack - PCI Passthrough Driver)
1421
1422 SYSMODS += VBoxPciRawR0
1423 VBoxPciRawR0_TEMPLATE = VBoxR0ExtPackPuel
1424 VBoxPciRawR0_SOURCES = Bus/DevPciRaw.cpp
1425 $(call VBOX_SET_VER_INFO_R0,VBoxPciRawR0,PUEL Extension Pack - PCI Passthrough Driver$(COMMA) ring-0)
1426
1427 Bus/DevPciRaw.cpp_INCS = Bus
1428 endif
1429
1430 #
1431 # The NVMe Extension Pack Modules.
1432 #
1433 if defined(VBOX_WITH_NVME_IMPL)
1434 DLLS += VBoxNvmeR3
1435 VBoxNvmeR3_TEMPLATE = VBoxR3ExtPackPuel
1436 VBoxNvmeR3_SOURCES = \
1437 Storage/DevNVMe.cpp
1438 $(call VBOX_SET_VER_INFO_DLL,VBoxNvmeR3,PUEL Extension Pack - NVMe Device)
1439
1440 SYSMODS += VBoxNvmeR0
1441 VBoxNvmeR0_TEMPLATE = VBoxR0ExtPackPuel
1442 VBoxNvmeR0_SOURCES = \
1443 Storage/DevNVMe.cpp
1444 $(call VBOX_SET_VER_INFO_R0,VBoxNvmeR0,PUEL Extension Pack - NVMe Device$(COMMA) ring-0)
1445
1446 ifdef VBOX_WITH_RAW_MODE
1447 SYSMODS += VBoxNvmeRC
1448 VBoxNvmeRC_TEMPLATE = VBoxRcExtPackPuel
1449 VBoxNvmeRC_SOURCES = \
1450 Storage/DevNVMe.cpp
1451 $(call VBOX_SET_VER_INFO_RC,VBoxNvmeRC,PUEL Extension Pack - NVMe Device$(COMMA) raw-mode)
1452 endif
1453
1454 # Hacky but MSI support *must* be enabled
1455 ifdef VBOX_WITH_MSI_DEVICES
1456 VBoxNvmeR3_DEFS += VBOX_WITH_MSI_DEVICES
1457 VBoxNvmeR0_DEFS += VBOX_WITH_MSI_DEVICES
1458 VBoxNvmeRC_DEFS += VBOX_WITH_MSI_DEVICES
1459 endif
1460
1461 endif
1462
1463
1464 #
1465 # The Intel PXE ROM.
1466 #
1467 INSTALLS += VBoxExtPackPuelInsRoms
1468 VBoxExtPackPuelInsRoms_TEMPLATE = VBoxInsExtPackPuel
1469 ifdef PXE_EXPERIMENTAL_BUILD_SETUP
1470 VBoxExtPackPuelInsRoms_SOURCES = $(PATH_OUT)/obj/NetBiosBin/NetBiosBin.rom=>PXE-Intel.rom
1471 else
1472 VBoxExtPackPuelInsRoms_SOURCES = PC/PXE/PXE-Intel.rom=>PXE-Intel.rom
1473 endif
1474endif # VBOX_WITH_EXTPACK_PUEL && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
1475
1476
1477if defined(VBOX_WITH_VMSVGA3D) && !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
1478 #
1479 # Template used for VBoxSVGA3D. (Strips away compiler options.)
1480 #
1481 TEMPLATE_VBoxSVGA3D := VBoxSVGA3D
1482 TEMPLATE_VBoxSVGA3D_EXTENDS := $(if-expr "$(KBUILD_TARGET)" == "darwin" && !defined(VBOX_WITH_NEW_XCODE),VBoxR3DllOsX107,VBOXR3)
1483 TEMPLATE_VBoxSVGA3D_CFLAGS = $(filter-out -pedantic -Wstrict-prototypes,$(TEMPLATE_$(TEMPLATE_VBoxSVGA3D_EXTENDS)_CFLAGS))
1484 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC140"
1485 # -wd4777: glsl_shader.c(1542): warning C4777: 'sprintf' : format string '%u' requires an argument of type 'unsigned int', but variadic argument 2 has type 'DWORD'
1486 TEMPLATE_VBoxSVGA3D_CFLAGS.win = $(TEMPLATE_$(TEMPLATE_VBoxSVGA3D_EXTENDS)_CFLAGS.win) \
1487 -wd4777
1488 endif
1489 TEMPLATE_VBoxSVGA3D_CXXFLAGS = $(filter-out -pedantic,$(TEMPLATE_$(TEMPLATE_VBoxSVGA3D_EXTENDS)_CXXFLAGS))
1490 TEMPLATE_VBoxSVGA3D_OBJCFLAGS = $(filter-out -pedantic,$(TEMPLATE_$(TEMPLATE_VBoxSVGA3D_EXTENDS)_OBJCFLAGS))
1491 TEMPLATE_VBoxSVGA3D_OBJCXXFLAGS = $(filter-out -pedantic,$(TEMPLATE_$(TEMPLATE_VBoxSVGA3D_EXTENDS)_OBJCXXFLAGS))
1492 TEMPLATE_VBoxSVGA3D_LDFLAGS.darwin = $(TEMPLATE_$(TEMPLATE_VBoxSVGA3D_EXTENDS)_LDFLAGS.darwin) \
1493 -framework AppKit -framework OpenGL -framework IOKit
1494
1495 #
1496 # The shader library used by the SVGA3D implementation.
1497 #
1498 DLLS += VBoxSVGA3D
1499 VBoxSVGA3D_TEMPLATE = VBoxSVGA3D
1500 VBoxSVGA3D_SDKS = ReorderCompilerIncs
1501 VBoxSVGA3D_DEFS = \
1502 __WINESRC__ \
1503 _REENTRANT \
1504 WINE_NOWINSOCK \
1505 VBOX_WITH_VMSVGA \
1506 VBOX_WITH_VMSVGA3D \
1507 _USE_MATH_DEFINES \
1508 VBOX_USING_WINDDK_W7_OR_LATER \
1509 VBOX_WINE_WITH_SINGLE_SWAPCHAIN_CONTEXT \
1510 IN_vmsvgashader_STATIC \
1511 IN_VMSVGA3D \
1512 VBOX_WINE_WITH_IPRT
1513 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1514 VBoxSVGA3D_DEFS += \
1515 WINE_UNICODE_API= \
1516 DLLDIR="" \
1517 BINDIR="" \
1518 LIB_TO_BINDIR="" \
1519 LIB_TO_DLLDIR="" \
1520 BIN_TO_DLLDIR="" \
1521 LIB_TO_DATADIR="" \
1522 BIN_TO_DATADIR=""
1523 else
1524 VBoxSVGA3D_DEFS += \
1525 WINE_UNICODE_API="" \
1526 DLLDIR=\"\" \
1527 BINDIR=\"\" \
1528 LIB_TO_BINDIR=\"\" \
1529 LIB_TO_DLLDIR=\"\" \
1530 BIN_TO_DLLDIR=\"\" \
1531 LIB_TO_DATADIR=\"\" \
1532 BIN_TO_DATADIR=\"\"
1533 endif
1534 if "$(KBUILD_TYPE)" != "debug" || defined(VBOX_WINE_NO_DEBUG_MSGS)
1535 VBoxSVGA3D_DEFS += WINE_NO_DEBUG_MSGS
1536 endif
1537 VBoxSVGA3D_DEFS.x86 += __i386__
1538 VBoxSVGA3D_DEFS.amd64 += __x86_64__
1539 VBoxSVGA3D_DEFS.win += \
1540 USE_WIN32_OPENGL \
1541 VBOX_WINE_WITHOUT_LIBWINE
1542 VBoxSVGA3D_DEFS.darwin += VBOX_VMSVGA3D_DUAL_OPENGL_PROFILE
1543 if 0 # Use the OpenGL 3.2 Core profile (VBoxSVGA3D_DEFS.darwin).
1544 VBoxSVGA3D_DEFS.darwin += VBOX_VMSVGA3D_DEFAULT_OGL_PROFILE=3.2 VBOX_VMSVGA3D_OTHER_OGL_PROFILE=2.1
1545 else
1546 VBoxSVGA3D_DEFS.darwin += VBOX_VMSVGA3D_DEFAULT_OGL_PROFILE=2.1 VBOX_VMSVGA3D_OTHER_OGL_PROFILE=3.2
1547 endif
1548
1549 # WINE relies on a gcc 4.4 feature but we have 4.2 on Darwin
1550 VBoxSVGA3D_DEFS.darwin += \
1551 __builtin_ms_va_list=va_list \
1552 __stdcall= \
1553 ms_abi=
1554 VBoxSVGA3D_INCS = $(VBOX_GRAPHICS_INCS)
1555 VBoxSVGA3D_INCS.win := \
1556 Graphics/shaderlib/libWineStub/include
1557 VBoxSVGA3D_INCS.linux := \
1558 Graphics/shaderlib/wine/include
1559 VBoxSVGA3D_INCS.darwin := \
1560 Graphics/ \
1561 Graphics/shaderlib/wine/include
1562 VBoxSVGA3D_SOURCES := \
1563 Graphics/shaderlib/glsl_shader.c \
1564 Graphics/shaderlib/shader.c \
1565 Graphics/shaderlib/shader_sm1.c \
1566 Graphics/shaderlib/shader_sm4.c \
1567 Graphics/shaderlib/shaderapi.c \
1568 Graphics/shaderlib/utils.c \
1569 Graphics/shaderlib/stateblock.c \
1570 Graphics/shaderlib/directx.c \
1571 Graphics/shaderlib/libWineStub/debug.c
1572 VBoxSVGA3D_LIBS = $(LIB_RUNTIME)
1573 VBoxSVGA3D_LIBS.win += $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/Opengl32.lib
1574 if1of ($(KBUILD_TARGET), solaris linux freebsd)
1575 VBoxSVGA3D_LIBS += GL
1576 endif
1577 VBoxSVGA3D_LDFLAGS.darwin += \
1578 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxSVGA3D.dylib
1579 $(call VBOX_SET_VER_INFO_DLL,VBoxSVGA3D,VirtualBox VMSVGA 3D)
1580 # -wd4100: unreferenced format parameter
1581 # -wd4204: nonstandard extension used : non-constant initializer
1582 # -wd4245: '=' : conversion from 'int' to 'DWORD', signed/unsigned mismatch
1583 # -wd4305: 'function' : truncation from 'double' to 'GLclampf'
1584 VBoxSVGA3D_CFLAGS.win = -wd4100 -wd4204 -wd4245 -wd4305
1585 ifneq ($(KBUILD_TARGET),win)
1586 VBoxSVGA3D_CFLAGS += -Wno-unused-parameter -Wno-unused-function
1587 endif
1588
1589 #
1590 # The Objective C code needs to be separate since the shaderlib redefines most
1591 # GL functions as pointers, making it impossible to mix with code calling OpenGL
1592 # functions directly. This module must be compiled for 10.7 or later, thus it
1593 # needs to be separate from VBoxDD.dylib, or at least that's our belief...
1594 #
1595 DLLS.darwin += VBoxSVGA3DObjC
1596 VBoxSVGA3DObjC_TEMPLATE = VBoxSVGA3D
1597 VBoxSVGA3DObjC_DEFS = $(VBoxSVGA3D_DEFS) IN_VMSVGA3DCOCOA
1598 VBoxSVGA3DObjC_DEFS.x86 = __i386__
1599 VBoxSVGA3DObjC_DEFS.amd64 = __x86_64__
1600 VBoxSVGA3DObjC_DEFS.darwin = $(VBoxSVGA3D_DEFS.darwin)
1601 VBoxSVGA3DObjC_INCS = $(VBoxSVGA3D_INCS)
1602 VBoxSVGA3DObjC_INCS.darwin = $(VBoxSVGA3D_INCS.darwin)
1603 VBoxSVGA3DObjC_LIBS = $(LIB_RUNTIME)
1604 VBoxSVGA3DObjC_LDFLAGS.darwin = \
1605 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxSVGA3DObjC.dylib \
1606 -framework OpenGL
1607 VBoxSVGA3DObjC_SOURCES.darwin += \
1608 Graphics/DevVGA-SVGA3d-cocoa.m
1609
1610
1611endif # defined(VBOX_WITH_VMSVGA3D) && !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
1612
1613include $(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