VirtualBox

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

Last change on this file since 5498 was 5473, checked in by vboxsync, 17 years ago

forgot this one

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