VirtualBox

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

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

more new phys code.

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