VirtualBox

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

Last change on this file since 15399 was 15366, checked in by vboxsync, 16 years ago

Storage: Eradicated the last bits using the old VDI only backend, keeping only the testcases for now (no longer built).

Completely removed old iSCSI driver.

Added intnet option to addiscsidisk and adjusted documentation.

Made backend name comparisons case-insensitive.

Detect VMDK files not according to VMDK 1.0 and reject with clear error message.

Changed format probing logic to not fall through to the "unsupported" case if it's a known format, i.e. has valid header.

VBoxManage converthd generic format converter made official.

Added format flag to VBoxManage createhd, allows creating VMDK files.

VBoxManage convertdd reimplemented based on new framework, supporting any image format.

VBoxManage internalcommands sethduuid reimplemented based on new framework, supporting any image format.

Cleaned up error codes.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 21.3 KB
Line 
1# $Id: Makefile.kmk 15366 2008-12-12 13:50:32Z vboxsync $
2## @file
3# Top-level makefile for the devices, drivers and services.
4#
5
6#
7# Copyright (C) 2006-2007 Sun Microsystems, Inc.
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# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18# Clara, CA 95054 USA or visit http://www.sun.com if you need
19# additional information or have any questions.
20#
21
22SUB_DEPTH = ../../..
23include $(KBUILD_PATH)/subheader.kmk
24
25# temporary, we will remove this in some days
26VBOX_WITH_BSD_REASS = 1
27VBOX_WITH_SLIRP_ICMP = 1
28
29VBOX_PATH_DEVICES_SRC := $(PATH_SUB_CURRENT)
30
31# Include sub-makefiles.
32include $(PATH_SUB_CURRENT)/PC/BIOS/Makefile.kmk
33ifdef VBOX_WITH_VMI
34 include $(PATH_SUB_CURRENT)/PC/VMI/Makefile.kmk
35endif
36include $(PATH_SUB_CURRENT)/Graphics/BIOS/Makefile.kmk
37include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
38include $(PATH_SUB_CURRENT)/Storage/testcase/Makefile.kmk
39ifndef VBOX_OSE
40 include $(PATH_SUB_CURRENT)/Storage/VBoxHDDFormats/Makefile.kmk
41endif
42ifdef VBOX_WITH_INTEL_PXE
43 include $(PATH_SUB_CURRENT)/PC/PXE/Makefile.kmk
44else
45 # Subdir with complex makefile.
46 SUBDIRS_LIBRARIES += $(VBOX_PATH_DEVICES_SRC)/PC/Etherboot-src
47 SUBDIRS_CLEAN += $(VBOX_PATH_DEVICES_SRC)/PC/Etherboot-src
48 # Disable the unsafe pass order optimizations.
49 KBUILD_SAFE_PARALLEL = 1
50endif
51
52#
53# Main targets.
54#
55LIBRARIES += DevicesR3 Drivers ServicesR0
56ifdef VBOX_USE_NAT
57LIBRARIES += NatAlias
58endif
59DLLS += VBoxDDU VBoxDD VBoxDD2
60SYSMODS += VBoxDDGC VBoxDD2GC VBoxDDR0 VBoxDD2R0
61
62
63#
64# VBoxDDU (shared object)
65#
66VBoxDDU_TEMPLATE = VBOXR3
67VBoxDDU_NAME = $(basename $(notdir $(LIB_DDU)))
68VBoxDDU_INST.darwin = $(INST_DLL) $(INST_TESTCASE)
69VBoxDDU_DEFS = IN_VBOXDDU
70ifdef VBOX_WITH_USB
71 VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB
72 VBoxDDU_SDKS.win = WINPSDK W2K3DDK
73 ifdef VBOX_WITH_EHCI
74 VBoxDDU_DEFS += VBOX_WITH_EHCI
75 endif
76 ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
77 VBoxDDU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN
78 endif
79else
80 VBoxDDU_SDKS.win = WINPSDK
81endif
82VBoxDDU_SOURCES = \
83 Storage/VBoxHDD-new.cpp \
84 Storage/VDIHDDCore.cpp \
85 Storage/VHDHDDCore.cpp \
86 Storage/VmdkHDDCore.cpp \
87 Storage/RawHDDCore.cpp \
88 VBoxDDUDeps.cpp
89ifdef VBOX_WITH_USB
90 VBoxDDU_INCS.os2 += \
91 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
92endif
93VBoxDDU_LIBS = \
94 $(LIB_RUNTIME)
95ifdef VBOX_WITH_USB
96 VBoxDDU_LIBS += \
97 $(PATH_LIB)/USBLib$(VBOX_SUFF_LIB)
98endif
99ifeq ($(KBUILD_TARGET),l4)
100 VBoxDDU_LIBS += \
101 $(L4_LIBDIR)/libl4sys.p.a
102endif
103VBoxDDU_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDDU.dylib
104ifdef VBOX_WITH_USB
105 ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
106 VBoxDDU_LDFLAGS.darwin += -framework IOKit
107 endif
108endif
109
110VBoxDDU_LDFLAGS.linux = -Wl,--no-undefined
111VBoxDDU_LDFLAGS.l4 = -Wl,--no-undefined
112
113#
114# VBoxDDULnxHostR3 (Only needed for l4, currently for executing vditool on L4Linux.)
115#
116ifeq ($(KBUILD_TARGET),l4)
117 LIBRARIES += VBoxDDULnxHostR3
118 VBoxDDULnxHostR3_TEMPLATE = VBOXLNXHOSTR3LIB
119 VBoxDDULnxHostR3_DEFS = IN_VBOXDDU
120 VBoxDDULnxHostR3_SOURCES = $(VBoxDDU_SOURCES)
121endif
122
123#
124# VBoxDD (shared object)
125#
126VBoxDD_TEMPLATE = VBOXR3
127VBoxDD_SDKS.win = WINPSDK DXSDK W2K3DDK VBOX_NTDLL
128VBoxDD_SOURCES = \
129 Builtins.cpp
130VBoxDD_DEFS = VBOX_ACPI
131ifdef VBOX_WITH_USB
132 VBoxDD_DEFS += VBOX_WITH_USB IN_USB_R3
133 ifdef VBOX_WITH_EHCI
134 VBoxDD_DEFS += VBOX_WITH_EHCI
135 endif
136endif
137ifdef VBOX_WITH_AHCI
138 VBoxDD_DEFS += VBOX_WITH_AHCI
139endif
140ifdef VBOX_WITH_ISCSI
141 VBoxDD_DEFS += VBOX_WITH_ISCSI
142endif
143ifdef VBOX_WITH_E1000
144 VBoxDD_DEFS += VBOX_WITH_E1000
145endif
146ifdef VBOX_WITH_BUSLOGIC
147 VBoxDD_DEFS += VBOX_WITH_BUSLOGIC
148endif
149ifndef VBOX_OSE
150 VBoxDD_DEFS += VBOX_WITH_INIP
151endif
152ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
153 VBoxDD_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
154endif
155ifdef VBOX_WITH_SCSI
156 VBoxDD_DEFS += VBOX_WITH_SCSI
157endif
158ifdef VBOX_WITH_LSILOGIC
159 VBoxDD_DEFS += VBOX_WITH_LSILOGIC
160endif
161VBoxDD_LIBS = \
162 $(PATH_LIB)/DevicesR3$(VBOX_SUFF_LIB) \
163 $(PATH_LIB)/Drivers$(VBOX_SUFF_LIB) \
164 $(PATH_LIB)/VgaDefBiosLogo$(VBOX_SUFF_LIB) \
165 $(LIB_VMM) \
166 $(LIB_RUNTIME)
167ifeq ($(KBUILD_TARGET),win)
168 VBoxDD_LIBS += \
169 $(LIB_DDU) \
170 $(PATH_LIB)/VBoxDD2.lib \
171 $(PATH_SDK_DXSDK_LIB)/dxguid.lib
172else
173 VBoxDD_LIBS += \
174 $(INSTARGET_VBoxDDU) \
175 $(INSTARGET_VBoxDD2)
176endif
177ifeq ($(KBUILD_TARGET),l4)
178 VBoxDD_LIBS += \
179 $(L4_LIBDIR)/libl4sys.p.a
180endif
181
182ifdef VBOX_USE_NAT
183VBoxDD_LIBS += $(PATH_LIB)/NatAlias$(VBOX_SUFF_LIB)
184endif
185
186ifdef VBOX_WITH_NETFLT
187VBoxDD_LIBS.win += $(PATH_LIB)/WinNetConfig.lib
188endif
189
190ifeq ($(KBUILD_TARGET),solaris)
191 VBoxDD_LIBS += adm
192 ifdef VBOX_WITH_SUID_WRAPPER
193 VBoxDD_LIBS += secdb
194 endif
195 ifdef VBOX_WITH_USB
196 VBoxDD_LIBS += aio
197 endif
198endif
199VBoxDD_LIBS.darwin += \
200 $(LIB_REM)
201VBoxDD_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD.dylib \
202 -framework CoreAudio \
203 -framework IOKit \
204 -framework Carbon \
205 -framework DiskArbitration
206VBoxDD_LDFLAGS.linux = -Wl,--no-undefined
207VBoxDD_LDFLAGS.l4 = -Wl,--no-undefined
208
209#
210# VBoxDD2 (shared object)
211#
212VBoxDD2_TEMPLATE = VBOXR3
213VBoxDD2_DEFS = IN_VBOXDD2 \
214 $(if $(VBOX_WITH_VMI),VBOX_WITH_VMI,)
215VBoxDD2_INCS := \
216 $(PATH_SUB_CURRENT)
217VBoxDD2_SOURCES = \
218 Builtins2.cpp \
219 PC/DevAPIC.cpp
220VBoxDD2_LIBS = \
221 $(PATH_LIB)/PcBiosBin$(VBOX_SUFF_LIB) \
222 $(PATH_LIB)/VgaBiosBin$(VBOX_SUFF_LIB) \
223 $(PATH_LIB)/NetBiosBin$(VBOX_SUFF_LIB) \
224 $(if $(VBOX_WITH_VMI),$(PATH_LIB)/VmiBiosBin$(VBOX_SUFF_LIB)) \
225 $(LIB_VMM) \
226 $(LIB_RUNTIME)
227ifeq ($(KBUILD_TARGET),l4)
228VBoxDD2_LIBS += \
229 $(L4_LIBDIR)/libl4sys.p.a
230endif
231VBoxDD2_LIBS.darwin += $(LIB_REM)
232VBoxDD2_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD2.dylib
233VBoxDD2_LDFLAGS.linux = -Wl,--no-undefined
234VBoxDD2_LDFLAGS.l4 = -Wl,--no-undefined
235
236
237#
238# DevicesR3 (library)
239#
240DevicesR3_TEMPLATE = VBOXR3
241DevicesR3_SDKS.win = WINPSDK W2K3DDK
242DevicesR3_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE
243DevicesR3_DEFS += VBOX_HGCM_HOST_CODE \
244 $(if $(VBOX_WITH_VMI),VBOX_WITH_VMI,)
245DevicesR3_INCS := \
246 $(PATH_SUB_CURRENT)
247DevicesR3_SOURCES = \
248 Input/DevPS2.cpp \
249 Bus/DevPCI.cpp \
250 Graphics/DevVGA.cpp \
251 Storage/DevATA.cpp \
252 PC/DevPit-i8254.cpp \
253 PC/DevPIC.cpp \
254 PC/DevACPI.cpp \
255 PC/DevRTC.cpp \
256 PC/DevPcBios.cpp \
257 PC/DevPcArch.c \
258 VMMDev/VBoxDev.cpp \
259 VMMDev/VMMDevHGCM.cpp \
260 Network/DevPCNet.cpp \
261 Audio/DevIchAc97.cpp \
262 Audio/DevSB16.cpp \
263 PC/DevDMA.cpp \
264 Storage/fdc.c \
265 Storage/Debug.cpp \
266 Serial/DevSerial.cpp \
267 Parallel/DevParallel.cpp
268
269ifdef VBOX_WITH_E1000
270 DevicesR3_DEFS += VBOX_WITH_E1000
271 DevicesR3_SOURCES += \
272 Network/DevE1000.cpp \
273 Network/DevE1000Phy.cpp \
274 Network/DevEEPROM.cpp
275endif
276
277ifndef VBOX_OSE
278DevicesR3_INCS += \
279 Network/lwip/src/include \
280 Network/lwip/src/include/ipv4 \
281 Network/lwip/vbox/include
282DevicesR3_SOURCES += \
283 Network/lwip/src/api/api_lib.c \
284 Network/lwip/src/api/api_msg.c \
285 Network/lwip/src/api/err.c \
286 Network/lwip/src/api/sockets.c \
287 Network/lwip/src/api/tcpip.c \
288 Network/lwip/src/core/tcp_in.c \
289 Network/lwip/src/core/dhcp.c \
290 Network/lwip/src/core/inet.c \
291 Network/lwip/src/core/mem.c \
292 Network/lwip/src/core/memp.c \
293 Network/lwip/src/core/netif.c \
294 Network/lwip/src/core/pbuf.c \
295 Network/lwip/src/core/raw.c \
296 Network/lwip/src/core/stats.c \
297 Network/lwip/src/core/sys.c \
298 Network/lwip/src/core/tcp.c \
299 Network/lwip/src/core/ipv4/ip_addr.c \
300 Network/lwip/src/core/ipv4/icmp.c \
301 Network/lwip/src/core/ipv4/ip.c \
302 Network/lwip/src/core/ipv4/ip_frag.c \
303 Network/lwip/src/core/tcp_out.c \
304 Network/lwip/src/core/udp.c \
305 Network/lwip/src/netif/etharp.c \
306 Network/lwip/vbox/sys_arch.c \
307 Network/DevINIP.cpp
308DevicesR3_DEFS += VBOX_WITH_INIP
309endif
310
311ifdef VBOX_WITH_AHCI
312DevicesR3_DEFS += VBOX_WITH_AHCI IN_AHCI_R3
313DevicesR3_SOURCES += \
314 Storage/DevAHCI.cpp \
315 Storage/ATAController.cpp
316endif
317
318ifdef VBOX_WITH_BUSLOGIC
319DevicesR3_DEFS += VBOX_WITH_BUSLOGIC
320DevicesR3_SOURCES += \
321 Storage/DevBusLogic.cpp \
322 Storage/VBoxSCSI.cpp
323endif
324
325ifdef VBOX_WITH_LSILOGIC
326DevicesR3_DEFS += VBOX_WITH_LSILOGIC
327DevicesR3_SOURCES += \
328 Storage/DevLsiLogicSCSI.cpp
329endif
330
331ifdef VBOX_WITH_USB
332DevicesR3_DEFS += VBOX_WITH_USB IN_USB_R3
333
334DevicesR3_SOURCES += \
335 USB/DevOHCI.cpp
336
337 ifdef VBOX_WITH_EHCI
338 DevicesR3_DEFS += VBOX_WITH_EHCI
339 DevicesR3_SOURCES += \
340 USB/DevEHCI.cpp
341 endif
342
343endif
344
345DevicesR3_DEFS += VBOX_WITH_HGCM
346DevicesR3_DEFS.linux += _GNU_SOURCE
347DevicesR3_DEFS.l4 += _GNU_SOURCE
348
349# DevACPI.cpp needs vboxaml.hex which we generate from PC/vbox.dsl. (bird: What's vboxaml.aml?)
350DevicesR3_CLEAN += $(PATH_DevicesR3)/vboxaml.hex $(PATH_DevicesR3)/vboxaml.aml
351PC/DevACPI.cpp_DEPS = $(PATH_DevicesR3)/vboxaml.hex
352PC/DevACPI.cpp_INCS = $(PATH_DevicesR3)
353
354$$(PATH_DevicesR3)/vboxaml.hex: $(PATH_SUB_CURRENT)/PC/vbox.dsl | $$(dir $$@)
355 $(call MSG_TOOL,iasl,DevicesR3,$<,$@)
356 $(QUIET)$(VBOX_IASLCMD) -tc -vs -p $@ $<
357
358# For finding PCIInternal.h from VBox/pci.h.
359Bus/DevPCI.cpp_INCS = Bus
360
361# For finding and generating vbetables.h (see Graphics/BIOS/Makefile.kmk).
362Graphics/DevVGA.cpp_INCS = $(PATH_VgaBiosBin)
363Graphics/DevVGA.cpp_DEPS = $(PATH_VgaBiosBin)/vbetables.h
364
365
366
367#
368# VBoxDDGC (sysmod)
369#
370VBoxDDGC_TEMPLATE = VBOXGC
371VBoxDDGC_SYSSUFF = .gc
372VBoxDDGC_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE
373VBoxDDGC_DEFS =
374VBoxDDGC_INCS := \
375 $(PATH_SUB_CURRENT)
376VBoxDDGC_SOURCES = \
377 Bus/DevPCI.cpp \
378 Graphics/DevVGA.cpp \
379 Input/DevPS2.cpp \
380 PC/DevACPI.cpp \
381 PC/DevPit-i8254.cpp \
382 PC/DevPIC.cpp \
383 PC/DevRTC.cpp \
384 Storage/DevATA.cpp \
385 Network/DevPCNet.cpp \
386 Serial/DevSerial.cpp \
387 Parallel/DevParallel.cpp
388
389ifdef VBOX_WITH_E1000
390 VBoxDDGC_DEFS += VBOX_WITH_E1000
391 VBoxDDGC_SOURCES += \
392 Network/DevE1000.cpp \
393 Network/DevE1000Phy.cpp
394endif
395
396ifdef VBOX_WITH_USB
397VBoxDDGC_DEFS += VBOX_WITH_USB IN_USB_GC
398VBoxDDGC_SOURCES += \
399 USB/DevOHCI.cpp
400
401 ifdef VBOX_WITH_EHCI
402 VBoxDDGC_DEFS += VBOX_WITH_EHCI
403 VBoxDDGC_SOURCES += \
404 USB/DevEHCI.cpp
405 endif
406
407endif
408
409ifdef VBOX_WITH_AHCI
410VBoxDDGC_DEFS += VBOX_WITH_AHCI IN_AHCI_GC
411VBoxDDGC_SOURCES += \
412 Storage/DevAHCI.cpp \
413 Storage/ATAController.cpp
414endif
415
416ifdef VBOX_WITH_BUSLOGIC
417VBoxDDGC_DEFS += VBOX_WITH_BUSLOGIC
418VBoxDDGC_SOURCES += \
419 Storage/DevBusLogic.cpp
420endif
421
422ifdef VBOX_WITH_LSILOGIC
423VBoxDDGC_DEFS += VBOX_WITH_LSILOGIC
424VBoxDDGC_SOURCES += \
425 Storage/DevLsiLogicSCSI.cpp
426endif
427
428ifeq ($(VBOX_LDR_FMT32),pe)
429VBoxDDGC_LDFLAGS = -Entry:vgaMMIOWrite
430endif
431if1of ($(VBOX_LDR_FMT32), pe lx)
432VBoxDDGC_LIBS = \
433 $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \
434 $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB)
435endif
436
437
438#
439# VBoxDDR0 (sysmod)
440#
441VBoxDDR0_TEMPLATE = VBOXR0
442VBoxDDR0_SYSSUFF = .r0
443VBoxDDR0_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 VBOX_WITH_2X_4GB_ADDR_SPACE
444VBoxDDR0_DEFS = IN_RT_R0
445VBoxDDR0_INCS := \
446 $(PATH_SUB_CURRENT)
447VBoxDDR0_SOURCES = \
448 Bus/DevPCI.cpp \
449 Graphics/DevVGA.cpp \
450 Input/DevPS2.cpp \
451 PC/DevACPI.cpp \
452 PC/DevPit-i8254.cpp \
453 PC/DevPIC.cpp \
454 PC/DevRTC.cpp \
455 Storage/DevATA.cpp \
456 Network/DevPCNet.cpp \
457 Serial/DevSerial.cpp \
458 Parallel/DevParallel.cpp
459
460ifdef VBOX_WITH_E1000
461 VBoxDDR0_DEFS += VBOX_WITH_E1000
462 VBoxDDR0_SOURCES += \
463 Network/DevE1000.cpp \
464 Network/DevE1000Phy.cpp
465endif
466
467ifdef VBOX_WITH_USB
468VBoxDDR0_DEFS += VBOX_WITH_USB IN_USB_R0
469VBoxDDR0_SOURCES += \
470 USB/DevOHCI.cpp
471
472 ifdef VBOX_WITH_EHCI
473 VBoxDDR0_DEFS += VBOX_WITH_EHCI
474 VBoxDDR0_SOURCES += \
475 USB/DevEHCI.cpp
476 endif
477endif
478
479ifdef VBOX_WITH_AHCI
480VBoxDDR0_DEFS += VBOX_WITH_AHCI IN_AHCI_R0
481VBoxDDR0_SOURCES += \
482 Storage/DevAHCI.cpp \
483 Storage/ATAController.cpp
484endif
485
486ifdef VBOX_WITH_BUSLOGIC
487VBoxDDR0_DEFS += VBOX_WITH_BUSLOGIC
488VBoxDDR0_SOURCES += \
489 Storage/DevBusLogic.cpp
490endif
491
492ifdef VBOX_WITH_LSILOGIC
493VBoxDDR0_DEFS += VBOX_WITH_LSILOGIC
494VBoxDDR0_SOURCES += \
495 Storage/DevLsiLogicSCSI.cpp
496endif
497
498ifeq ($(VBOX_LDR_FMT32),pe)
499VBoxDDR0_LDFLAGS = -Entry:vgaMMIOWrite
500endif
501if1of ($(VBOX_LDR_FMT), pe lx)
502VBoxDDR0_LIBS = $(PATH_LIB)/VMMR0Imp$(VBOX_SUFF_LIB)
503endif
504
505
506#
507# VBoxDD2GC (LGPL sysmod)
508#
509VBoxDD2GC_TEMPLATE = VBOXGC
510VBoxDD2GC_DEFS =
511VBoxDD2GC_SYSSUFF = .gc
512VBoxDD2GC_INCS := \
513 $(PATH_SUB_CURRENT)
514VBoxDD2GC_SOURCES = \
515 PC/DevAPIC.cpp
516ifeq ($(VBOX_LDR_FMT32),pe)
517VBoxDD2GC_LDFLAGS = -Entry:apicMMIOWrite
518endif
519if1of ($(VBOX_LDR_FMT32), pe lx)
520VBoxDD2GC_LIBS = \
521 $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \
522 $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB)
523endif
524
525
526#
527# VBoxDD2R0 (LGPL sysmod)
528#
529VBoxDD2R0_TEMPLATE = VBOXR0
530VBoxDD2R0_DEFS = IN_RT_R0
531VBoxDD2R0_SYSSUFF = .r0
532VBoxDD2R0_INCS := \
533 $(PATH_SUB_CURRENT)
534VBoxDD2R0_SOURCES = \
535 PC/DevAPIC.cpp
536ifeq ($(VBOX_LDR_FMT),pe)
537VBoxDD2R0_LDFLAGS = -Entry:apicMMIOWrite
538endif
539if1of ($(VBOX_LDR_FMT), pe lx)
540VBoxDD2R0_LIBS = $(PATH_LIB)/VMMR0Imp$(VBOX_SUFF_LIB)
541endif
542
543
544#
545# Drivers (library)
546#
547ifeq ($(KBUILD_TARGET),l4) # We are using real Linux headers, not the cleaned up user space ones
548Drivers_TEMPLATE = VBOXR3NP
549else
550Drivers_TEMPLATE = VBOXR3
551endif
552Drivers_SDKS.win = WINPSDK W2K3DDK
553Storage/DrvHostDVD.cpp_SDKS.win = W2K3DDK
554Drivers_DEFS.win += _WIN32_WINNT=0x0510
555Drivers_DEFS = IN_IDE_R3
556ifdef VBOX_WITH_NETFLT
557Drivers_DEFS += VBOX_WITH_NETFLT
558endif
559Drivers_INCS := \
560 $(PATH_SUB_CURRENT) \
561 Network/slirp
562Drivers_SOURCES = \
563 Audio/audio.c \
564 Audio/audiosniffer.c \
565 Audio/mixeng.c \
566 Audio/noaudio.c \
567 Input/DrvKeyboardQueue.cpp \
568 Input/DrvMouseQueue.cpp \
569 Network/DrvIntNet.cpp \
570 PC/DrvACPI.cpp \
571 Serial/DrvChar.cpp \
572 Serial/DrvNamedPipe.cpp \
573 Storage/DrvBlock.cpp \
574 Storage/DrvHostBase.cpp \
575 Storage/DrvHostDVD.cpp \
576 Storage/DrvHostFloppy.cpp \
577 Storage/DrvMediaISO.cpp \
578 Storage/DrvRawImage.cpp \
579 Storage/DrvVD.cpp \
580 Network/DrvNetSniffer.cpp \
581 Network/Pcap.cpp
582
583VBOX_SLIRP_SOURCES = \
584 Network/DrvNAT.cpp \
585 Network/slirp/bootp.c \
586 Network/slirp/cksum.c \
587 Network/slirp/debug.c \
588 Network/slirp/if.c \
589 Network/slirp/ip_icmp.c \
590 Network/slirp/ip_input.c \
591 Network/slirp/ip_output.c \
592 Network/slirp/mbuf.c \
593 Network/slirp/misc.c \
594 Network/slirp/sbuf.c \
595 Network/slirp/slirp.c \
596 Network/slirp/socket.c \
597 Network/slirp/tcp_input.c \
598 Network/slirp/tcp_output.c \
599 Network/slirp/tcp_subr.c \
600 Network/slirp/tcp_timer.c \
601 Network/slirp/tftp.c \
602 Network/slirp/udp.c
603
604Drivers_SOURCES += $(VBOX_SLIRP_SOURCES)
605define def_vbox_slirp_cflags
606 $(file)_DEFS += \
607 VBOX_WITH_SIMPLIFIED_SLIRP_SYNC \
608 $(if $(VBOX_WITH_BSD_REASS),VBOX_WITH_BSD_REASS,) \
609 $(if $(VBOX_WITH_SLIRP_MEMORY_CHECK),VBOX_WITH_SLIRP_MEMORY_CHECK,) \
610 $(if $(VBOX_WITH_DEBUG_NAT_SOCKETS),VBOX_WITH_DEBUG_NAT_SOCKETS,) \
611 $(if $(VBOX_WITH_SLIRP_ICMP),VBOX_WITH_SLIRP_ICMP,)
612 ifeq ($(KBUILD_TARGET),win)
613 $(file)_CFLAGS = -wd4018
614 else
615 $(file)_CFLAGS = -Wno-sign-compare
616 endif
617endef
618$(foreach file,$(VBOX_SLIRP_SOURCES),$(eval $(def_vbox_slirp_cflags)))
619
620# -- OS specific --
621
622ifeq ($(KBUILD_TARGET),darwin)
623Drivers_SOURCES := $(filter-out \
624 Storage/DrvHostRaw% \
625 Storage/DrvHostFloppy% \
626 , $(Drivers_SOURCES)) \
627 Audio/coreaudio.c
628Drivers_SOURCES.darwin = \
629 Serial/DrvHostSerial.cpp
630endif # darwin
631
632ifeq ($(KBUILD_TARGET),freebsd)
633Drivers_SOURCES := $(filter-out \
634 Storage/DrvHost% \
635 , $(Drivers_SOURCES))
636Drivers_SOURCES.freebsd =
637endif # freebsd
638
639
640ifeq ($(KBUILD_TARGET),l4)
641Drivers_SOURCES = \
642 Input/DrvMouseQueue.cpp \
643 Input/DrvKeyboardQueue.cpp \
644 Storage/DrvBlock.cpp \
645 Storage/DrvMediaISO.cpp \
646 Storage/DrvRawImage.cpp \
647 Storage/DrvHostBase.cpp \
648 Storage/DrvHostDVD.cpp \
649 Storage/DrvVD.cpp \
650 PC/DrvACPI.cpp \
651 Network/DrvIntNet.cpp \
652 Network/DrvNetSniffer.cpp \
653 Network/Pcap.cpp \
654 Audio/audio.c \
655 Audio/mixeng.c \
656 Audio/noaudio.c \
657 Audio/audiosniffer.c
658
659Drivers_SOURCES.l4 = \
660 Network/DrvTAP.cpp \
661 Audio/ossaudio.c
662endif # l4
663
664Drivers_SOURCES.linux = \
665 Network/DrvTAP.cpp \
666 Audio/ossaudio.c \
667 Parallel/DrvHostParallel.cpp \
668 Serial/DrvHostSerial.cpp
669
670ifeq ($(KBUILD_TARGET),os2)
671Drivers_SOURCES := $(filter-out \
672 Storage/DrvHost% \
673 , $(Drivers_SOURCES))
674Drivers_SOURCES.os2 = \
675 Network/DrvTAPOs2.cpp
676endif
677
678ifeq ($(KBUILD_TARGET),solaris)
679Drivers_SOURCES := $(filter-out \
680 Storage/DrvHost% \
681 , $(Drivers_SOURCES))
682Drivers_SOURCES.solaris = \
683 Audio/solaudio.c \
684 $(if $(VBOX_SOLARIS_10),,Network/DrvTAP.cpp) \
685 Storage/DrvHostBase.cpp \
686 Storage/DrvHostDVD.cpp
687 ifdef VBOX_WITH_CROSSBOW
688 Drivers_SOURCES += Network/solaris/vbox-libdlpi.cpp
689 Drivers_DEFS += VBOX_WITH_CROSSBOW
690 endif
691 ifdef VBOX_WITH_SUID_WRAPPER
692 Drivers_DEFS += VBOX_WITH_SUID_WRAPPER
693 endif
694endif
695
696Drivers_SOURCES.win = \
697 Network/DrvTAPWin.cpp \
698 Audio/dsoundaudio.c \
699 Serial/DrvHostSerial.cpp
700
701if defined(VBOX_WITH_NETFLT)
702 if defined(VBOX_NETFLT_ONDEMAND_BIND)
703 Drivers_DEFS.win += VBOX_NETFLT_ONDEMAND_BIND
704 endif
705 Drivers_SOURCES.win += Network/win/DrvIntNet-win.cpp
706endif
707
708# -- features --
709
710ifdef VBOX_WITH_ISCSI
711 VBoxDDU_SOURCES += \
712 Storage/ISCSIHDDCore.cpp
713 VBoxDDU_DEFS += VBOX_WITH_ISCSI
714 Storage/DrvVD.cpp_INCS = \
715 Network/lwip/src/include \
716 Network/lwip/src/include/ipv4 \
717 Network/lwip/vbox/include
718endif # VBOX_WITH_ISCSI
719
720ifdef VBOX_WITH_ALSA
721 Drivers_DEFS.linux += VBOX_WITH_ALSA
722 Drivers_SOURCES.linux+= \
723 Audio/alsaaudio.c \
724 Audio/alsa_stubs.c
725# VBoxDD_LIBS.linux += asound
726endif
727
728ifdef VBOX_WITH_PULSE
729 Drivers_DEFS.linux += VBOX_WITH_PULSE
730 Drivers_SOURCES.linux+= \
731 Audio/pulseaudio.c \
732 Audio/pulse_stubs.c
733# VBoxDD_LIBS.linux += pulse
734endif
735
736ifdef VBOX_WITH_USB
737 Drivers_DEFS += VBOX_WITH_USB IN_USB_R3
738 Drivers_SOURCES += \
739 USB/DrvVUSBRootHub.cpp \
740 USB/VUSBDevice.cpp \
741 USB/VUSBUrb.cpp
742 ifdef VBOX_WITH_VRDP
743 Drivers_DEFS += VBOX_WITH_VRDP
744 Drivers_SOURCES += \
745 USB/vrdp/USBProxyDevice-vrdp.cpp
746 endif
747
748 Drivers_DEFS.darwin += VUSB_HAVE_USBPROXY_DEVICE
749 ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
750 Drivers_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN
751 endif
752 Drivers_SOURCES.darwin += \
753 USB/USBProxyDevice.cpp \
754 USB/darwin/USBProxyDevice-darwin.cpp
755
756 Drivers_DEFS.linux += \
757 VUSB_HAVE_USBPROXY_DEVICE \
758 $(if $(VBOX_WITHOUT_LINUX_COMPILER_H),VBOX_WITHOUT_LINUX_COMPILER_H,) \
759 $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,)
760 Drivers_SOURCES.linux += \
761 USB/USBProxyDevice.cpp \
762 USB/linux/USBProxyDevice-linux.cpp
763
764 Drivers_DEFS.l4 += VUSB_HAVE_USBPROXY_DEVICE
765 Drivers_SOURCES.l4 += \
766 USB/USBProxyDevice.cpp \
767 USB/linux/USBProxyDevice-linux.cpp
768
769 Drivers_DEFS.os2 += VUSB_HAVE_USBPROXY_DEVICE
770 Drivers_INCS.os2 += $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
771 Drivers_SOURCES.os2 += \
772 USB/USBProxyDevice.cpp \
773 USB/os2/USBProxyDevice-os2.cpp
774
775 Drivers_DEFS.win += VUSB_HAVE_USBPROXY_DEVICE
776 Drivers_SOURCES.win += \
777 USB/USBProxyDevice.cpp \
778 USB/win/USBProxyDevice-win.cpp
779
780 Drivers_DEFS.solaris += VUSB_HAVE_USBPROXY_DEVICE
781 Drivers_SOURCES.solaris += \
782 USB/USBProxyDevice.cpp \
783 USB/solaris/USBProxyDevice-solaris.cpp
784endif # VBOX_WITH_USB
785
786ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
787 Drivers_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
788 Drivers_SOURCES += \
789 Storage/DrvRawImageAsync.cpp \
790 Storage/DrvTransportAsync.cpp
791endif #VBOX_WITH_PDM_ASYNC_COMPLETION
792
793ifdef VBOX_WITH_SCSI
794 Drivers_DEFS += VBOX_WITH_SCSI
795 Drivers_SOURCES += \
796 Storage/DrvSCSI.cpp
797 Drivers_SOURCES.linux += \
798 Storage/DrvSCSIHost.cpp
799endif # VBOX_WITH_SCSI
800
801ifdef VBOX_WITH_FAULT_INJECTION
802 Drivers_DEFS += VBOX_WITH_FAULT_INJECTION
803 Drivers_SOURCES += \
804 Storage/DrvFaultInject.cpp
805endif # VBOX_WITH_FAULT_INJECTION
806
807#
808# Ring-0 Services (library, linked into VMMR0.r0)
809#
810ServicesR0_TEMPLATE = VBOXR0
811ServicesR0_DEFS = IN_INTNET_R0 IN_RT_R0
812ServicesR0_SOURCES = \
813 Network/SrvIntNetR0.cpp
814
815if defined(VBOX_WITH_NETFLT)
816 ServicesR0_SOURCES.win.amd64 += Network/win/SrvIntNetR0A-win.asm
817 ServicesR0_DEFS.win.amd64 += RT_WITH_W64_UNWIND_HACK
818endif
819
820
821#
822# Internal Networking - Ring-3 Testcase for the Ring-0 code (a bit hackish).
823#
824ifdef VBOX_WITH_TESTCASES
825 PROGRAMS += tstIntNetR0
826 tstIntNetR0_TEMPLATE = VBOXR3TSTEXE
827 tstIntNetR0_DEFS = IN_INTNET_R0
828 tstIntNetR0_SOURCES = \
829 Network/testcase/tstIntNetR0.cpp
830endif
831
832#
833# Internal Networking - Ring-3 Testcase for the Ring-0 code (a bit hackish).
834#
835ifdef VBOX_WITH_TESTCASES
836 PROGRAMS += tstIntNet-1
837 tstIntNet-1_TEMPLATE = VBOXR3TSTEXE
838 tstIntNet-1_SOURCES = \
839 Network/testcase/tstIntNet-1.cpp \
840 Network/Pcap.cpp
841endif
842
843
844#
845# EEPROM device unit test requires cppunit
846#
847ifdef VBOX_WITH_CPPUNIT_TESTCASES
848ifdef VBOX_WITH_E1000
849 PROGRAMS += tstDevEEPROM
850 tstDevEEPROM_TEMPLATE = VBOXCPPUNITEXE
851 tstDevEEPROM_SOURCES = \
852 Network/testcase/tstDevEEPROM.cpp
853 tstDevEEPROM_LIBS = \
854 $(TARGET_DevicesR3)
855 PROGRAMS += tstDevPhy
856 tstDevPhy_TEMPLATE = VBOXCPPUNITEXE
857 tstDevPhy_SOURCES = \
858 Network/testcase/tstDevPhy.cpp \
859 Network/DevE1000Phy.cpp
860 tstDevPhy_DEFS = PHY_UNIT_TEST
861endif
862endif
863
864include $(KBUILD_PATH)/subfooter.kmk
865
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