VirtualBox

source: vbox/trunk/src/VBox/Devices/Makefile@ 1754

Last change on this file since 1754 was 1723, checked in by vboxsync, 18 years ago

Serial device:

  • Renamed file & cleaned up
  • Enabled GC & R0 IO port handling
  • Critical section protection added
  • Added structure checking in testcase
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 11.7 KB
Line 
1#
2# Makefile for the devices, drivers and services.
3#
4
5#
6# Copyright (C) 2006 InnoTek Systemberatung GmbH
7#
8# This file is part of VirtualBox Open Source Edition (OSE), as
9# available from http://www.virtualbox.org. This file is free software;
10# you can redistribute it and/or modify it under the terms of the GNU
11# General Public License as published by the Free Software Foundation,
12# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13# distribution. VirtualBox OSE is distributed in the hope that it will
14# be useful, but WITHOUT ANY WARRANTY of any kind.
15#
16# If you received this file as part of a commercial VirtualBox
17# distribution, then only the terms of your commercial VirtualBox
18# license agreement apply instead of the previous paragraph.
19#
20
21DEPTH = ../../..
22include $(PATH_KBUILD)/header.kmk
23
24ifdef VBOX_WITH_TESTCASES
25 PROGRAMS = tstIntNetR0
26endif
27LIBRARIES = DevicesR3 Drivers ServicesR0
28DLLS = VBoxDDU VBoxDD VBoxDD2
29SYSMODS = VBoxDDGC VBoxDD2GC VBoxDDR0 VBoxDD2R0
30
31OTHER_CLEAN = \
32 $(PATH_TARGET)/vboxaml.hex \
33 $(PATH_TARGET)/vboxaml.aml
34
35SUBDIRS = \
36 testcase \
37 PC/BIOS \
38 PC/Etherboot-src \
39 Graphics/BIOS
40SUBDIRS_AFTER = \
41 Storage/testcase
42
43
44#
45# Check for VBOX_* stuff which governs defines.
46#
47ifdef VBOX_USE_IOAPIC
48 DEFS += USE_IOAPIC
49endif
50ifdef VBOX_WITH_VRDP
51 DEFS += VBOX_VRDP
52endif
53ifdef VBOX_WITH_INTERNAL_NETWORKING
54 DEFS += VBOX_WITH_INTERNAL_NETWORKING
55endif
56
57# enable the pdm lock.
58#DEFS += VBOX_WITH_PDM_LOCK
59
60
61#
62# VBoxDDU (shared object)
63#
64VBoxDDU_TEMPLATE = VBOXR3
65VBoxDDU_DEFS = IN_VBOXDDU
66ifdef VBOX_WITH_USB
67 VBoxDDU_DEFS.win = VBOX_WITH_USB
68 VBoxDDU_SDKS.win = WINPSDK W2K3DDK
69 VBoxDDU_SOURCES.win = \
70 USB/win32/USBLib-win32.cpp
71else
72 VBoxDDU_SDKS.win = WINPSDK
73endif
74VBoxDDU_SOURCES = \
75 Storage/VDICore.cpp
76# Storage/VmdkHDDCore.cpp
77VBoxDDU_LIBS = \
78 $(LIB_RUNTIME)
79ifeq ($(BUILD_TARGET),l4)
80 VBoxDDU_LIBS += \
81 $(L4_LIBDIR)/libl4sys.p.a
82endif
83VBoxDDU_LDFLAGS.darwin = -install_name @executable_path/VBoxDDU.dylib
84VBoxDDU_LDFLAGS.linux = -Wl,--no-undefined
85VBoxDDU_LDFLAGS.l4 = -Wl,--no-undefined
86
87
88#
89# VBoxDD (shared object)
90#
91VBoxDD_TEMPLATE = VBOXR3
92VBoxDD_SDKS.win = WINPSDK DXSDK W2K3DDK VBOX_NTDLL
93VBoxDD_SOURCES = \
94 Builtins.cpp \
95 muldiv64.c
96VBoxDD_DEFS = VBOX_ACPI
97ifdef VBOX_WITH_USB
98 VBoxDD_DEFS += VBOX_WITH_USB IN_USB_R3
99endif
100ifdef VBOX_WITH_ISCSI
101 VBoxDD_DEFS += VBOX_WITH_ISCSI
102endif
103VBoxDD_LIBS = \
104 $(PATH_LIB)/DevicesR3$(VBOX_SUFF_LIB) \
105 $(PATH_LIB)/Drivers$(VBOX_SUFF_LIB) \
106 $(PATH_LIB)/PcDefBiosLogo$(VBOX_SUFF_LIB) \
107 $(LIB_VMM) \
108 $(LIB_RUNTIME)
109ifeq ($(BUILD_TARGET),win)
110 VBoxDD_LIBS += \
111 $(PATH_LIB)/VBoxDDU.lib \
112 $(PATH_LIB)/VBoxDD2.lib \
113 $(PATH_SDK_DXSDK_LIB)/dxguid.lib
114else
115 VBoxDD_LIBS += \
116 $(INSTARGET_VBoxDDU) \
117 $(INSTARGET_VBoxDD2)
118endif
119ifeq ($(BUILD_TARGET),l4)
120 VBoxDD_LIBS += \
121 $(L4_LIBDIR)/libl4sys.p.a
122endif
123VBoxDD_LIBS.darwin = \
124 $(LIB_REM)
125VBoxDD_LDFLAGS.darwin = -install_name @executable_path/VBoxDD.dylib -framework CoreAudio
126VBoxDD_LDFLAGS.linux = -Wl,--no-undefined
127VBoxDD_LDFLAGS.l4 = -Wl,--no-undefined
128
129
130# damn, fix this.
131ifeq ($(BUILD_TARGET),win)
132$(PATH_LIB)/VBoxDD2.lib: $(PATH_BIN)/VBoxDD2.dll
133$(PATH_LIB)/VBoxDDU.lib: $(PATH_BIN)/VBoxDDU.dll
134endif
135
136
137#
138# VBoxDD2 (shared object)
139#
140VBoxDD2_TEMPLATE = VBOXR3
141VBoxDD2_DEFS = IN_VBOXDD2
142VBoxDD2_SOURCES = \
143 Builtins2.cpp \
144 PC/apic.c
145VBoxDD2_LIBS = \
146 $(PATH_LIB)/PcBiosBin$(VBOX_SUFF_LIB) \
147 $(PATH_LIB)/VgaBiosBin$(VBOX_SUFF_LIB) \
148 $(PATH_LIB)/NetBiosBin$(VBOX_SUFF_LIB) \
149 $(LIB_VMM) \
150 $(LIB_RUNTIME)
151ifeq ($(BUILD_TARGET),l4)
152VBoxDD2_LIBS += \
153 $(L4_LIBDIR)/libl4sys.p.a
154endif
155VBoxDD2_LIBS.darwin += $(LIB_REM)
156VBoxDD2_LDFLAGS.darwin = -install_name @executable_path/VBoxDD2.dylib
157VBoxDD2_LDFLAGS.linux = -Wl,--no-undefined
158VBoxDD2_LDFLAGS.l4 = -Wl,--no-undefined
159
160
161#
162# DevicesR3 (library)
163#
164DevicesR3_TEMPLATE = VBOXR3
165DevicesR3_SDKS.win = WINPSDK W2K3DDK
166DevicesR3_INCS = \
167 $(PATH_CURRENT)
168DevicesR3_SOURCES = \
169 Input/pckbd.c \
170 Bus/DevPCI.cpp \
171 Graphics/DevVGA.cpp \
172 Storage/DevATA.cpp \
173 PC/DevPit-i8254.cpp \
174 PC/DevPIC.cpp \
175 PC/DevACPI.cpp \
176 PC/DevRTC.cpp \
177 PC/DevPcBios.cpp \
178 PC/DevPcArch.c \
179 VMMDev/VBoxDev.cpp \
180 VMMDev/VMMDevHGCM.cpp \
181 Network/DevPCNet.cpp \
182 Audio/DevIchAc97.cpp \
183 PC/dma.c \
184 Storage/fdc.c \
185 Serial/DevSerial.cpp
186
187ifeq (0,1)
188DevicesR3_SOURCES += \
189 Network/ne2000.c
190endif
191
192ifdef VBOX_WITH_USB
193DevicesR3_DEFS += VBOX_WITH_USB IN_USB_R3
194DevicesR3_SOURCES += \
195 USB/DevOHCI.cpp
196endif
197
198DevicesR3_DEFS += VBOX_HGCM
199DevicesR3_DEFS.linux += _GNU_SOURCE
200DevicesR3_DEFS.l4 += _GNU_SOURCE
201
202
203# DevACPI.cpp needs vboxaml.hex which we generate from PC/vbox.dsl.
204PC/DevACPI.cpp_DEPS = $(PATH_TARGET)/vboxaml.hex
205PC/DevACPI.cpp_INCS = $(PATH_TARGET)
206Bus/DevPCI.cpp_INCS = Bus
207
208
209#
210# VBoxDDGC (sysmod)
211#
212VBoxDDGC_TEMPLATE = VBOXGC
213VBoxDDGC_DEFS =
214VBoxDDGC_SYSSUFF = .gc
215VBoxDDGC_INCS = \
216 $(PATH_CURRENT)
217VBoxDDGC_SOURCES = \
218 muldiv64.c \
219 Bus/DevPCI.cpp \
220 Graphics/DevVGA.cpp \
221 Input/pckbd.c \
222 PC/DevACPI.cpp \
223 PC/DevPit-i8254.cpp \
224 PC/DevPIC.cpp \
225 PC/DevRTC.cpp \
226 Storage/DevATA.cpp \
227 Network/DevPCNet.cpp \
228 Serial/DevSerial.cpp
229
230ifdef VBOX_WITH_USB
231VBoxDDGC_DEFS += VBOX_WITH_USB IN_USB_GC
232VBoxDDGC_SOURCES += \
233 USB/DevOHCI.cpp
234endif
235
236ifeq ($(VBOX_LDR_FMT32),pe)
237VBoxDDGC_LDFLAGS = -Entry:vgaMMIOWrite
238endif
239ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
240VBoxDDGC_LIBS = \
241 $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \
242 $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB)
243endif
244
245
246#
247# VBoxDDR0 (sysmod)
248#
249VBoxDDR0_TEMPLATE = VBOXR0
250VBoxDDR0_SYSSUFF = .r0
251VBoxDDR0_DEFS = IN_RT_R0
252VBoxDDR0_INCS = \
253 $(PATH_CURRENT)
254VBoxDDR0_SOURCES = \
255 muldiv64.c \
256 Bus/DevPCI.cpp \
257 Graphics/DevVGA.cpp \
258 Input/pckbd.c \
259 PC/DevACPI.cpp \
260 PC/DevPit-i8254.cpp \
261 PC/DevPIC.cpp \
262 PC/DevRTC.cpp \
263 Storage/DevATA.cpp \
264 Network/DevPCNet.cpp \
265 Serial/DevSerial.cpp
266
267ifdef VBOX_WITH_USB
268VBoxDDR0_DEFS += VBOX_WITH_USB IN_USB_R0
269VBoxDDR0_SOURCES += \
270 USB/DevOHCI.cpp
271endif
272
273ifeq ($(VBOX_LDR_FMT32),pe)
274VBoxDDR0_LDFLAGS = -Entry:vgaMMIOWrite
275endif
276ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
277VBoxDDR0_LIBS = $(PATH_LIB)/VMMR0Imp$(VBOX_SUFF_LIB)
278endif
279VBoxDDR0_LIBS += $(PATH_LIB)/RuntimeR0$(VBOX_SUFF_LIB)
280ifeq ($(VBOX_LDR_FMT32),elf) # this is template stuff!
281VBoxDDR0_LIBS += $(VBOX_GCC_LIBGCC)
282endif
283
284
285#
286# VBoxDD2GC (LGPL sysmod)
287#
288VBoxDD2GC_TEMPLATE = VBOXGC
289VBoxDD2GC_DEFS =
290VBoxDD2GC_SYSSUFF = .gc
291VBoxDD2GC_INCS = \
292 $(PATH_CURRENT)
293VBoxDD2GC_SOURCES = \
294 PC/apic.c
295ifeq ($(VBOX_LDR_FMT32),pe)
296VBoxDD2GC_LDFLAGS = -Entry:apicMMIOWrite
297endif
298ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
299VBoxDD2GC_LIBS = \
300 $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB) \
301 $(PATH_LIB)/VMMGCImp$(VBOX_SUFF_LIB)
302endif
303
304
305#
306# VBoxDD2R0 (LGPL sysmod)
307#
308VBoxDD2R0_TEMPLATE = VBOXR0
309VBoxDD2R0_DEFS = IN_RT_R0
310VBoxDD2R0_SYSSUFF = .r0
311VBoxDD2R0_INCS = \
312 $(PATH_CURRENT)
313VBoxDD2R0_SOURCES = \
314 PC/apic.c
315ifeq ($(VBOX_LDR_FMT),pe)
316VBoxDD2R0_LDFLAGS = -Entry:apicMMIOWrite
317endif
318ifneq ($(filter pe lx,$(VBOX_LDR_FMT)),)
319VBoxDD2R0_LIBS = $(PATH_LIB)/VMMR0Imp$(VBOX_SUFF_LIB)
320endif
321VBoxDD2R0_LIBS += $(PATH_LIB)/RuntimeR0$(VBOX_SUFF_LIB)
322ifeq ($(VBOX_LDR_FMT),elf)
323VBoxDD2R0_LIBS += $(VBOX_GCC_LIBGCC)
324endif
325
326
327#
328# Drivers (library)
329#
330ifeq ($(BUILD_TARGET),l4) # We are using real Linux headers, not the cleaned up user space ones
331Drivers_TEMPLATE = VBOXR3NP
332else
333Drivers_TEMPLATE = VBOXR3
334endif
335Drivers_SDKS.win = WINPSDK W2K3DDK
336Storage/DrvHostDVD.cpp_SDKS.win = W2K3DDK
337Drivers_DEFS = IN_IDE_R3
338Drivers_INCS = \
339 Network/slirp
340Drivers_SOURCES = \
341 Input/DrvMouseQueue.cpp \
342 Input/DrvKeyboardQueue.cpp \
343 Storage/VBoxHDD.cpp \
344 Storage/DrvBlock.cpp \
345 Storage/VmdkHDD.cpp \
346 Storage/DrvMediaISO.cpp \
347 Storage/DrvRawImage.cpp \
348 Storage/DrvHostBase.cpp \
349 Storage/DrvHostDVD.cpp \
350 Storage/DrvHostFloppy.cpp \
351 Storage/DrvHostRawDisk.cpp \
352 PC/DrvACPI.cpp \
353 Network/DrvIntNet.cpp \
354 Network/DrvNetSniffer.cpp \
355 Network/DrvNAT.cpp \
356 Network/slirp/cksum.c \
357 Network/slirp/if.c \
358 Network/slirp/ip_icmp.c \
359 Network/slirp/ip_input.c \
360 Network/slirp/ip_output.c \
361 Network/slirp/slirp.c \
362 Network/slirp/mbuf.c \
363 Network/slirp/misc.c \
364 Network/slirp/sbuf.c \
365 Network/slirp/socket.c \
366 Network/slirp/tcp_input.c \
367 Network/slirp/tcp_output.c \
368 Network/slirp/tcp_subr.c \
369 Network/slirp/tcp_timer.c \
370 Network/slirp/tftp.c \
371 Network/slirp/udp.c \
372 Network/slirp/bootp.c \
373 Network/slirp/debug.c \
374 Audio/audio.c \
375 Audio/mixeng.c \
376 Audio/noaudio.c \
377 Audio/audiosniffer.c \
378 Serial/DrvChar.cpp \
379 Serial/DrvNamedPipe.cpp
380
381# -- OS specific --
382
383ifeq ($(BUILD_TARGET),darwin)
384Drivers_SOURCES := $(filter-out \
385 Storage/DrvHost% \
386 , $(Drivers_SOURCES)) \
387 Audio/coreaudio.c
388Drivers_SOURCES.darwin =
389endif # darwin
390
391ifeq ($(BUILD_TARGET),freebsd)
392Drivers_SOURCES := $(filter-out \
393 Storage/DrvHost% \
394 , $(Drivers_SOURCES))
395Drivers_SOURCES.freebsd =
396endif # freebsd
397
398
399ifeq ($(BUILD_TARGET),l4)
400Drivers_SOURCES = \
401 Input/DrvMouseQueue.cpp \
402 Input/DrvKeyboardQueue.cpp \
403 Storage/VBoxHDD.cpp \
404 Storage/DrvBlock.cpp \
405 Storage/VmdkHDD.cpp \
406 Storage/DrvMediaISO.cpp \
407 Storage/DrvRawImage.cpp \
408 Storage/DrvHostBase.cpp \
409 Storage/DrvHostDVD.cpp \
410 PC/DrvACPI.cpp \
411 Network/DrvIntNet.cpp \
412 Network/DrvNetSniffer.cpp \
413 Audio/audio.c \
414 Audio/mixeng.c \
415 Audio/noaudio.c \
416 Audio/audiosniffer.c
417
418Drivers_SOURCES.l4 = \
419 Network/DrvTAP.cpp \
420 Audio/ossaudio.c
421endif # l4
422
423Drivers_SOURCES.linux = \
424 Network/DrvTAP.cpp \
425 Audio/ossaudio.c
426
427ifeq ($(BUILD_TARGET),os2)
428Drivers_SOURCES := $(filter-out \
429 Storage/DrvHost% \
430 , $(Drivers_SOURCES))
431Drivers_SOURCES.os2 =
432endif
433
434Drivers_SOURCES.win = \
435 Network/DrvTAPWin32.cpp \
436 Audio/dsoundaudio.c
437
438
439# -- features --
440
441ifdef VBOX_WITH_ISCSI
442 Drivers_SOURCES += \
443 Storage/DrvISCSI.cpp \
444 Storage/DrvISCSITransportTCP.cpp
445 Drivers_DEFS += VBOX_WITH_ISCSI
446endif # VBOX_WITH_ISCSI
447
448ifdef VBOX_WITH_ALSA
449 Drivers_DEFS.linux += VBOX_WITH_ALSA
450 Drivers_SOURCES.linux+= \
451 Audio/alsaaudio.c
452 VBoxDD_LIBS.linux += asound
453endif
454
455ifdef VBOX_WITH_USB
456 Drivers_DEFS += VBOX_WITH_USB IN_USB_R3
457 Drivers_SOURCES += \
458 USB/DrvVUSBRootHub.cpp \
459 USB/VUSBDevice.cpp \
460 USB/VUSBUrb.cpp
461 ifdef VBOX_WITH_VRDP
462 Drivers_SOURCES += \
463 USB/vrdp/USBProxyDevice-vrdp.cpp
464 endif
465
466 Drivers_DEFS.linux += VUSB_HAVE_USBPROXY_DEVICE
467 ifdef VBOX_WITHOUT_LINUX_COMPILER_H
468 Drivers_DEFS.linux += VBOX_WITHOUT_LINUX_COMPILER_H
469 endif
470 Drivers_SOURCES.linux+= \
471 USB/USBProxyDevice.cpp \
472 USB/linux/USBProxyDevice-linux.cpp
473
474 Drivers_DEFS.l4 += VUSB_HAVE_USBPROXY_DEVICE
475 Drivers_SOURCES.l4 += \
476 USB/USBProxyDevice.cpp \
477 USB/linux/USBProxyDevice-linux.cpp
478
479 Drivers_DEFS.win += VUSB_HAVE_USBPROXY_DEVICE
480 Drivers_SOURCES.win += \
481 USB/USBProxyDevice.cpp \
482 USB/win32/USBProxyDevice-win32.cpp
483endif # VBOX_WITH_USB
484
485
486
487#
488# Ring-0 Services (library, linked into VMMR0.r0)
489#
490ServicesR0_TEMPLATE = VBOXR0
491ServicesR0_DEFS = IN_INTNET_R0 IN_RT_R0
492ServicesR0_SOURCES = \
493 Network/SrvIntNetR0.cpp
494
495#
496# Internal Networking - Ring-3 Testcase for the Ring-0 code (a bit hackish).
497#
498tstIntNetR0_TEMPLATE = VBOXR3TSTEXE
499tstIntNetR0_DEFS = IN_INTNET_R0
500tstIntNetR0_SOURCES = \
501 Network/testcase/tstIntNetR0.cpp
502tstIntNetR0_LIBS = \
503 $(LIB_RUNTIME)
504
505
506include $(PATH_KBUILD)/footer.kmk
507
508
509# ACPI DSL generation
510$(PATH_TARGET)/vboxaml.hex: PC/vbox.dsl
511 $(call MSG_L1,iasl $<,=> $@)
512 $(QUIET)$(VBOX_IASLCMD) -tc -vs -p $@ $<
513
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