VirtualBox

source: vbox/trunk/src/VBox/VMM/Makefile.kmk@ 5905

Last change on this file since 5905 was 5812, checked in by vboxsync, 17 years ago

Continued work on the async implementation. Added to Makefile but disabled by default. Add VBOX_WITH_PDM_ASYNC_COMPLETION to compile it.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 9.7 KB
Line 
1# $Id: Makefile.kmk 5812 2007-11-21 20:35:33Z vboxsync $
2## @file
3# Top-level makefile for the VMM.
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## @todo get rid of these.
21# Enable the PDM lock.
22#DEFS += VBOX_WITH_PDM_LOCK
23ifdef VBOX_WITH_INTERNAL_NETWORKING
24DEFS += VBOX_WITH_INTERNAL_NETWORKING
25endif
26
27# Include sub-makefiles.
28include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
29
30
31#
32# VMMR3.dll
33#
34LIBRARIES += VMMR3
35
36VMMR3_TEMPLATE = VBOXR3
37VMMR3_DEFS = IN_VMM_R3 IN_PDM_R3 IN_CFGM_R3 IN_IOM_R3 IN_VM_R3 IN_CPUM_R3 IN_SELM_R3 IN_PGM_R3 IN_TRPM_R3 IN_MM_R3 IN_DBG_R3 \
38 IN_DBGF_R3 IN_PATM_R3 IN_DIS_R3 IN_STAM_R3 IN_CSAM_R3 IN_EM_R3 IN_TM_R3 IN_SSM_R3 IN_HWACCM_R3
39ifdef VBOX_WITH_IDT_PATCHING
40VMMR3_DEFS += VBOX_WITH_IDT_PATCHING
41endif
42ifdef VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
43VMMR3_DEFS += VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
44endif
45VMMR3_INCS := \
46 PATM \
47 $(PATH_SUB_CURRENT)
48
49VMMR3_SOURCES = \
50 CFGM.cpp \
51 CPUM.cpp \
52 CPUMStack.cpp \
53 DBGF.cpp \
54 DBGFAddr.cpp \
55 DBGFBp.cpp \
56 DBGFDisas.cpp \
57 DBGFInfo.cpp \
58 DBGFLog.cpp \
59 DBGFMem.cpp \
60 DBGFStack.cpp \
61 DBGFSym.cpp \
62 EM.cpp \
63 IOM.cpp \
64 MM.cpp \
65 MMHeap.cpp \
66 MMHyper.cpp \
67 MMPagePool.cpp \
68 MMPhys.cpp \
69 PDM.cpp \
70 PDMDevice.cpp \
71 PDMDriver.cpp \
72 PDMLdr.cpp \
73 PDMCritSect.cpp \
74 PDMQueue.cpp \
75 PDMThread.cpp \
76 PGM.cpp \
77 PGMDbg.cpp \
78 PGMHandler.cpp \
79 PGMMap.cpp \
80 PGMPhys.cpp \
81 PGMPool.cpp \
82 SELM.cpp \
83 SSM.cpp \
84 STAM.cpp \
85 TM.cpp \
86 TRPM.cpp \
87 VM.cpp \
88 VMEmt.cpp \
89 VMReq.cpp \
90 VMM.cpp \
91 VMMTests.cpp \
92 HWACCM.cpp \
93 VMMAll/CPUMAllRegs.cpp \
94 VMMAll/DBGFAll.cpp \
95 VMMAll/IOMAll.cpp \
96 VMMAll/IOMAllMMIO.cpp \
97 VMMAll/MMAll.cpp \
98 VMMAll/MMAllHyper.cpp \
99 VMMAll/MMAllPagePool.cpp \
100 VMMAll/MMAllPhys.cpp \
101 VMMAll/PDMAll.cpp \
102 VMMAll/PDMAllCritSect.cpp \
103 VMMAll/PDMAllQueue.cpp \
104 VMMAll/PGMAll.cpp \
105 VMMAll/PGMAllHandler.cpp \
106 VMMAll/PGMAllMap.cpp \
107 VMMAll/PGMAllPhys.cpp \
108 VMMAll/PGMAllPool.cpp \
109 VMMAll/SELMAll.cpp \
110 VMMAll/EMAll.cpp \
111 VMMAll/EMAllA.asm \
112 VMMAll/TMAll.cpp \
113 VMMAll/TMAllCpu.cpp \
114 VMMAll/TMAllReal.cpp \
115 VMMAll/TMAllVirtual.cpp \
116 VMMAll/TRPMAll.cpp \
117 VMMAll/VMAll.cpp \
118 VMMAll/VMMAll.cpp \
119 PATM/CSAM.cpp \
120 PATM/VMMAll/CSAMAll.cpp \
121 PATM/PATM.cpp \
122 PATM/PATMPatch.cpp \
123 PATM/PATMGuest.cpp \
124 PATM/PATMA.asm \
125 PATM/PATMSSM.cpp \
126 PATM/VMMAll/PATMAll.cpp
127VMMR3_SOURCES.x86 += \
128 VMMSwitcher/32BitTo32Bit.asm \
129 VMMSwitcher/32BitToPAE.asm \
130 VMMSwitcher/PAETo32Bit.asm \
131 VMMSwitcher/PAEToPAE.asm
132VMMR3_SOURCES.amd64 = \
133 VMMSwitcher/AMD64ToPAE.asm
134VMMR3_SOURCES.darwin.x86 += \
135 VMMSwitcher/AMD64ToPAE.asm
136
137ifdef VBOX_WITH_USB
138VMMR3_DEFS += VBOX_WITH_USB
139VMMR3_SOURCES += PDMUsb.cpp
140endif
141
142ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
143VMMR3_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
144VMMR3_DEFS.linux += __USE_FILE_OFFSET64 __USE_LARGEFILE64
145VMMR3_SOURCES += PDMAsyncCompletion.cpp
146endif
147
148#
149# The VMM DLL.
150#
151DLLS += VBoxVMM
152VBoxVMM_TEMPLATE = VBOXR3
153VBoxVMM_DEFS = $(VMMR3_DEFS)
154VBoxVMM_SOURCES = VBoxVMMDeps.cpp
155VBoxVMM_SONAME.linux = VBoxVMM.so
156
157VBoxVMM_LIBS = \
158 $(PATH_LIB)/VMMR3$(VBOX_SUFF_LIB) \
159 $(PATH_LIB)/DisasmR3$(VBOX_SUFF_LIB)
160ifdef VBOX_WITH_DEBUGGER
161VBoxVMM_LIBS += \
162 $(PATH_LIB)/Debugger$(VBOX_SUFF_LIB)
163endif
164VBoxVMM_LIBS += \
165 $(LIB_REM) \
166 $(LIB_RUNTIME)
167
168VBoxVMM_LIBS.win = $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
169VBoxVMM_LDFLAGS.win = /DELAYLOAD:dbghelp.dll
170VBoxVMM_LDFLAGS.linux = -Wl,--no-undefined
171VBoxVMM_LDFLAGS.darwin = -install_name @executable_path/VBoxVMM.dylib
172VBoxVMM_LDFLAGS.solaris = -mimpure-text
173
174
175ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
176
177#
178# VMMGCBuiltin.lib
179#
180LIBRARIES += VMMGCBuiltin
181VMMGCBuiltin_TEMPLATE = VBOXGC
182ifeq ($(VBOX_LDR_FMT32),pe)
183VMMGCBuiltin_SOURCES = VMMGC/VMMGCBuiltin.def
184endif
185ifeq ($(VBOX_LDR_FMT32),lx)
186VMMGCBuiltin_SOURCES = $(PATH_TARGET)/VMMGCBuiltin.def
187$(PATH_TARGET)/VMMGCBuiltin.def: VMMGC/VMMGCBuiltin.def | $(call DIRDEP,$(PATH_TARGET))
188 $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > [email protected]
189 $(MV) -f [email protected] $@
190endif
191
192
193#
194# VMMGCImp.lib
195#
196LIBRARIES += VMMGCImp
197VMMGCImp_TEMPLATE = VBOXGC
198ifeq ($(VBOX_LDR_FMT32),pe)
199VMMGCImp_SOURCES = VMMGC/VMMGC.def
200endif
201ifeq ($(VBOX_LDR_FMT32),lx)
202VMMGCImp_SOURCES = $(PATH_TARGET)/VMMGC.def
203$(PATH_TARGET)/VMMGC.def: VMMGC/VMMGC.def | $(call DIRDEP,$(PATH_TARGET))
204 $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > [email protected]
205 $(APPEND) "[email protected]" ""
206 $(APPEND) "[email protected]" " ___ehInit"
207 $(MV) -f [email protected] $@
208endif
209
210endif # GC: pe + lx
211
212
213ifneq ($(filter pe lx,$(VBOX_LDR_FMT)),)
214#
215# VMMR0Imp.lib
216#
217LIBRARIES += VMMR0Imp
218VMMR0Imp_TEMPLATE = VBOXR0
219 ifeq ($(VBOX_LDR_FMT),pe)
220VMMR0Imp_SOURCES = VMMR0/VMMR0.def
221 endif
222 ifeq ($(VBOX_LDR_FMT),lx)
223VMMR0Imp_SOURCES = $(PATH_TARGET)/VMMR0.def
224$(PATH_TARGET)/VMMR0.def: VMMR0/VMMR0.def | $(call DIRDEP,$(PATH_TARGET))
225 $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > [email protected]
226 $(APPEND) "[email protected]" ""
227 $(APPEND) "[email protected]" " ___ehInit"
228 $(MV) -f [email protected] $@
229 endif
230endif # R0: pe + lx
231
232
233#
234# VMMGC.gc
235#
236SYSMODS += VMMGC
237VMMGC_TEMPLATE = VBOXGC
238VMMGC_INCS := \
239 $(PATH_SUB_CURRENT) \
240 VMMGC \
241 PATM
242VMMGC_DEFS = IN_VMM_GC IN_PDM_GC IN_CFGM_GC IN_IOM_GC IN_MM_GC IN_RT_GC IN_TRPM_GC IN_SELM_GC IN_VM_GC IN_IOM_GC IN_DIS_GC DIS_CORE_ONLY IN_PGM_GC IN_CPUM_GC IN_EM_GC IN_TM_GC IN_PATM_GC IN_CSAM_GC IN_REM_GC IN_DBGF_GC
243ifdef VBOX_WITH_IDT_PATCHING
244VMMGC_DEFS += VBOX_WITH_IDT_PATCHING
245endif
246VMMGC_SYSSUFF = .gc
247VMMGC_LIBS = \
248 $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \
249 $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB)
250ifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
251VMMGC_LIBS += \
252 $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB)
253endif
254ifeq ($(VBOX_LDR_FMT32),pe)
255VMMGC_LDFLAGS = -Entry:VMMGCEntry
256endif
257VMMGC_SOURCES = \
258 VMMGC/VMMGC0.asm \
259 VMMGC/VMMGCDeps.cpp \
260 VMMGC/CPUMGC.cpp \
261 VMMGC/CPUMGCA.asm \
262 VMMGC/EMGCA.asm \
263 VMMGC/DBGFGC.cpp \
264 VMMGC/IOMGC.cpp \
265 VMMGC/MMRamGC.cpp \
266 VMMGC/MMRamGCA.asm \
267 VMMGC/PDMGCDevice.cpp \
268 VMMGC/PGMGC.cpp \
269 VMMGC/SELMGC.cpp \
270 VMMGC/TRPMGC.cpp \
271 VMMGC/TRPMGCHandlers.cpp \
272 VMMGC/TRPMGCHandlersA.asm \
273 VMMGC/VMMGC.cpp \
274 VMMGC/VMMGCA.asm \
275 VMMAll/CPUMAllRegs.cpp \
276 VMMAll/CPUMAllA.asm \
277 VMMAll/DBGFAll.cpp \
278 VMMAll/IOMAll.cpp \
279 VMMAll/IOMAllMMIO.cpp \
280 VMMAll/EMAll.cpp \
281 VMMAll/EMAllA.asm \
282 VMMAll/MMAll.cpp \
283 VMMAll/MMAllHyper.cpp \
284 VMMAll/PDMAll.cpp \
285 VMMAll/PDMAllCritSect.cpp \
286 VMMAll/PDMAllQueue.cpp \
287 VMMAll/PGMAll.cpp \
288 VMMAll/PGMAllHandler.cpp \
289 VMMAll/PGMAllMap.cpp \
290 VMMAll/PGMAllPhys.cpp \
291 VMMAll/PGMAllPool.cpp \
292 VMMAll/REMAll.cpp \
293 VMMAll/SELMAll.cpp \
294 VMMAll/TMAll.cpp \
295 VMMAll/TMAllCpu.cpp \
296 VMMAll/TMAllReal.cpp \
297 VMMAll/TMAllVirtual.cpp \
298 VMMAll/TRPMAll.cpp \
299 VMMAll/VMAll.cpp \
300 VMMAll/VMMAll.cpp \
301 PATM/VMMGC/CSAMGC.cpp \
302 PATM/VMMAll/CSAMAll.cpp \
303 PATM/VMMGC/PATMGC.cpp \
304 PATM/VMMAll/PATMAll.cpp
305
306ifeq ($(VBOX_LDR_FMT32),pe)
307VMMGC_SOURCES += VMMGC/VMMGC.def
308endif
309ifeq ($(VBOX_LDR_FMT32),lx)
310VMMGC_SOURCES += $(PATH_TARGET)/VMMGC.def
311endif
312
313# the very last one.
314VMMGC_SOURCES += VMMGC/VMMGC99.asm
315
316VMMGC/VMMGCDeps.cpp_CXXFLAGS.win = -Oi- -TC ## @todo rename VMMGCDeps.cpp to .c
317
318
319#
320# VMMR0.r0
321#
322SYSMODS += VMMR0
323VMMR0_TEMPLATE = VBOXR0
324VMMR0_INCS := \
325 $(PATH_SUB_CURRENT) \
326 PATM
327VMMR0_DEFS = IN_VMM_R0 IN_RT_R0 IN_TRPM_R0 IN_CPUM_R0 IN_VM_R0 IN_TM_R0 IN_INTNET_R0 IN_HWACCM_R0 IN_EM_R0 IN_PDM_R0 IN_PGM_R0 IN_DIS_R0 IN_MM_R0 IN_SELM_R0 IN_CSAM_R0 IN_PATM_R0 IN_DBGF_R0 IN_REM_R0 IN_IOM_R0 IN_GVMM_R0 IN_GMM_R0 DIS_CORE_ONLY
328ifdef VBOX_WITH_IDT_PATCHING
329VMMR0_DEFS += VBOX_WITH_IDT_PATCHING
330endif
331ifeq ($(VBOX_LDR_FMT),pe)
332VMMR0_LDFLAGS = -Entry:VMMR0EntryEx
333endif
334ifeq ($(VBOX_LDR_FMT),elf)
335 VMMR0_LDFLAGS = -e VMMR0EntryEx
336endif
337VMMR0_SYSSUFF = .r0
338VMMR0_SOURCES = \
339 VMMR0/CPUMR0.cpp \
340 VMMR0/DBGFR0.cpp \
341 VMMR0/GMMR0.cpp \
342 VMMR0/GVMMR0.cpp \
343 VMMR0/HWACCMR0.cpp \
344 VMMR0/HWACCMR0A.asm \
345 VMMR0/HWSVMR0.cpp \
346 VMMR0/HWVMXR0.cpp \
347 VMMR0/PDMR0Device.cpp \
348 VMMR0/PGMR0.cpp \
349 VMMR0/TRPMR0.cpp \
350 VMMR0/TRPMR0A.asm \
351 VMMR0/VMMR0.cpp \
352 VMMR0/VMMR0A.asm \
353 VMMAll/CPUMAllA.asm \
354 VMMAll/CPUMAllRegs.cpp \
355 VMMAll/DBGFAll.cpp \
356 VMMAll/EMAll.cpp \
357 VMMAll/EMAllA.asm \
358 VMMAll/IOMAll.cpp \
359 VMMAll/IOMAllMMIO.cpp \
360 VMMAll/MMAll.cpp \
361 VMMAll/MMAllHyper.cpp \
362 VMMAll/MMAllPagePool.cpp \
363 VMMAll/MMAllPhys.cpp \
364 VMMAll/PDMAll.cpp \
365 VMMAll/PDMAllCritSect.cpp \
366 VMMAll/PDMAllQueue.cpp \
367 VMMAll/PGMAll.cpp \
368 VMMAll/PGMAllHandler.cpp \
369 VMMAll/PGMAllMap.cpp \
370 VMMAll/PGMAllPhys.cpp \
371 VMMAll/PGMAllPool.cpp \
372 VMMAll/REMAll.cpp \
373 VMMAll/SELMAll.cpp \
374 VMMAll/TMAll.cpp \
375 VMMAll/TMAllCpu.cpp \
376 VMMAll/TMAllReal.cpp \
377 VMMAll/TMAllVirtual.cpp \
378 VMMAll/TRPMAll.cpp \
379 VMMAll/VMAll.cpp \
380
381
382ifeq ($(VBOX_LDR_FMT),pe)
383VMMR0_SOURCES += VMMR0/VMMR0.def
384endif
385ifeq ($(VBOX_LDR_FMT),lx)
386VMMR0_SOURCES += $(PATH_TARGET)/VMMR0.def
387endif
388
389VMMR0_LIBS = \
390 $(PATH_LIB)/ServicesR0$(VBOX_SUFF_LIB) \
391 $(PATH_LIB)/RuntimeR0$(VBOX_SUFF_LIB) \
392 $(PATH_LIB)/DisasmR0$(VBOX_SUFF_LIB)
393ifneq ($(filter pe lx,$(VBOX_LDR_FMT)),)
394VMMR0_LIBS += \
395 $(PATH_LIB)/SUPR0$(VBOX_SUFF_LIB)
396endif
397
398
399include $(PATH_KBUILD)/subfooter.kmk
400
401
402# Alias the PGM templates to the object in which they are defined.
403PGMBth.o PGMGst.o PGMShw.o \
404PGMBth.obj PGMGst.obj PGMShw.obj: PGM.o
405PGMAllBth.o PGMAllGst.o PGMAllShw.o \
406PGMAllBth.obj PGMAllGst.obj PGMAllShw.obj: PGMAll.o
407PGMGCBth.o PGMGCGst.o PGMGCShw.o \
408PGMGCBth.obj PGMGCGst.obj PGMGCShw.obj: PGMGC.o
409
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