VirtualBox

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

Last change on this file since 2705 was 2609, checked in by vboxsync, 18 years ago

Build USB on Darwin if VBOX_WITH_USB is defined.

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