VirtualBox

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

Last change on this file since 14488 was 14448, checked in by vboxsync, 16 years ago

disable the new REASS code again as it seems to be responsible for memory corruption

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