VirtualBox

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

Last change on this file since 4122 was 4071, checked in by vboxsync, 18 years ago

Biggest check-in ever. New source code headers for all (C) innotek files.

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