Makefile.kmk revision ac349f3ccffd425edd1cb6dac80cf04a9a94a85b
45565249f149f7562fc6ee85be7ca3a3706e32e6vboxsync# Top-level makefile for the VMM.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# Copyright (C) 2006-2007 innotek GmbH
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# available from http://www.virtualbox.org. This file is free software;
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# General Public License (GPL) as published by the Free Software
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncDEPTH = ../../..
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncinclude $(PATH_KBUILD)/subheader.kmk
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync## @todo get rid of these.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# Enable the PDM lock.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_PDM_LOCK
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncDEFS += VBOX_WITH_PDM_LOCK
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_INTERNAL_NETWORKING
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncDEFS += VBOX_WITH_INTERNAL_NETWORKING
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# Include sub-makefiles.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncinclude $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncLIBRARIES += VMMR3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_TEMPLATE = VBOXR3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_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 \
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync 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 IN_GMM_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_IDT_PATCHING
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR3_DEFS += VBOX_WITH_IDT_PATCHING
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_DEFS += VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_INCS := \
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync $(PATH_SUB_CURRENT)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_SOURCES = \
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_USB
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_DEFS += VBOX_WITH_USB
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_SOURCES += PDMUsb.cpp
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_PDM_ASYNC_COMPLETION
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMR3_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
cf0b951d0e7a93540b3931ca506ed97c1dc300ccvboxsyncVMMR3_DEFS.linux += __USE_FILE_OFFSET64 __USE_LARGEFILE64
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# The VMM DLL.
36ebaddfec017eee7e82ee466c25de002cdc4231vboxsyncDLLS += VBoxVMM
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_TEMPLATE = VBOXR3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_DEFS = $(VMMR3_DEFS)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_SOURCES = VBoxVMMDeps.cpp
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_LIBS = \
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync $(PATH_LIB)/VMMR3$(VBOX_SUFF_LIB) \
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsync $(PATH_LIB)/DisasmR3$(VBOX_SUFF_LIB)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_DEBUGGER
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVBoxVMM_LIBS += \
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsync $(PATH_LIB)/Debugger$(VBOX_SUFF_LIB)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_LIBS += \
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsync $(LIB_REM) \
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsync $(LIB_RUNTIME)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_LIBS.win = $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_LDFLAGS.linux = -Wl,--no-undefined
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_LDFLAGS.darwin = -install_name @executable_path/VBoxVMM.dylib
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifdef VBOX_WITH_PDM_ASYNC_COMPLETION
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync ifeq ($(BUILD_PLATFORM), linux)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVBoxVMM_LIBS += aio
a1537beae84f906549aaabab46d498051e438267vboxsyncifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncLIBRARIES += VMMGCBuiltin
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGCBuiltin_TEMPLATE = VBOXGC
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifeq ($(VBOX_LDR_FMT32),pe)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGCBuiltin_SOURCES = VMMGC/VMMGCBuiltin.def
ea2250e8dde0b8e53740df560de83a5cd07eed56vboxsyncifeq ($(VBOX_LDR_FMT32),lx)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMGCBuiltin_SOURCES = $(PATH_TARGET)/VMMGCBuiltin.def
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync$(PATH_TARGET)/VMMGCBuiltin.def: VMMGC/VMMGCBuiltin.def | $(call DIRDEP,$(PATH_TARGET))
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > $@.tmp
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync $(MV) -f $@.tmp $@
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncLIBRARIES += VMMGCImp
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGCImp_TEMPLATE = VBOXGC
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncifeq ($(VBOX_LDR_FMT32),pe)
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGCImp_SOURCES = VMMGC/VMMGC.def
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncifeq ($(VBOX_LDR_FMT32),lx)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncVMMGCImp_SOURCES = $(PATH_TARGET)/VMMGC.def
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync$(PATH_TARGET)/VMMGC.def: VMMGC/VMMGC.def | $(call DIRDEP,$(PATH_TARGET))
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > $@.tmp
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(APPEND) "$@.tmp" ""
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(APPEND) "$@.tmp" " ___ehInit"
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(MV) -f $@.tmp $@
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncendif # GC: pe + lx
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifneq ($(filter pe lx,$(VBOX_LDR_FMT)),)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncLIBRARIES += VMMR0Imp
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMR0Imp_TEMPLATE = VBOXR0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync ifeq ($(VBOX_LDR_FMT),pe)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0Imp_SOURCES = VMMR0/VMMR0.def
3a5d16e1911830b585d10278ea2cdbb408e261e6vboxsync ifeq ($(VBOX_LDR_FMT),lx)
3a5d16e1911830b585d10278ea2cdbb408e261e6vboxsyncVMMR0Imp_SOURCES = $(PATH_TARGET)/VMMR0.def
59e8feed5ffd306be4de820c67f766591aaa9b69vboxsync$(PATH_TARGET)/VMMR0.def: VMMR0/VMMR0.def | $(call DIRDEP,$(PATH_TARGET))
59e8feed5ffd306be4de820c67f766591aaa9b69vboxsync $(SED) -e '/not-os2/d' -e 's/^[ \t][ \t]*\([a-zA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > $@.tmp
59e8feed5ffd306be4de820c67f766591aaa9b69vboxsync $(APPEND) "$@.tmp" ""
59e8feed5ffd306be4de820c67f766591aaa9b69vboxsync $(APPEND) "$@.tmp" " ___ehInit"
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(MV) -f $@.tmp $@
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncendif # R0: pe + lx
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncSYSMODS += VMMGC
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGC_TEMPLATE = VBOXGC
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGC_INCS := \
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsync $(PATH_SUB_CURRENT) \
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGC_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
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncifdef VBOX_WITH_IDT_PATCHING
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGC_DEFS += VBOX_WITH_IDT_PATCHING
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGC_SYSSUFF = .gc
7df18da2bb5ae3a14ee50837d5eceb4212b0692dvboxsyncVMMGC_LIBS = \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/DisasmGC$(VBOX_SUFF_LIB) \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/RuntimeGC$(VBOX_SUFF_LIB)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifneq ($(filter pe lx,$(VBOX_LDR_FMT32)),)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGC_LIBS += \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/VMMGCBuiltin$(VBOX_SUFF_LIB)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifeq ($(VBOX_LDR_FMT32),pe)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGC_LDFLAGS = -Entry:VMMGCEntry
59e8feed5ffd306be4de820c67f766591aaa9b69vboxsyncVMMGC_SOURCES = \
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsyncifeq ($(VBOX_LDR_FMT32),pe)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGC_SOURCES += VMMGC/VMMGC.def
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifeq ($(VBOX_LDR_FMT32),lx)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGC_SOURCES += $(PATH_TARGET)/VMMGC.def
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# the very last one.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGC_SOURCES += VMMGC/VMMGC99.asm
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMGC/VMMGCDeps.cpp_CXXFLAGS.win = -Oi- -TC ## @todo rename VMMGCDeps.cpp to .c
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncSYSMODS += VMMR0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_TEMPLATE = VBOXR0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_INCS := \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_SUB_CURRENT) \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_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
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifdef VBOX_WITH_IDT_PATCHING
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_DEFS += VBOX_WITH_IDT_PATCHING
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifeq ($(VBOX_LDR_FMT),pe)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_LDFLAGS = -Entry:VMMR0EntryEx
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifeq ($(VBOX_LDR_FMT),elf)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync VMMR0_LDFLAGS = -e VMMR0EntryEx
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_SYSSUFF = .r0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_SOURCES = \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifeq ($(VBOX_LDR_FMT),pe)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_SOURCES += VMMR0/VMMR0.def
cfa7d08dfc1259a88f151c4a65b7dddba9ac3d91vboxsyncifeq ($(VBOX_LDR_FMT),lx)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_SOURCES += $(PATH_TARGET)/VMMR0.def
36ebaddfec017eee7e82ee466c25de002cdc4231vboxsyncVMMR0_LIBS = \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/ServicesR0$(VBOX_SUFF_LIB) \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/RuntimeR0$(VBOX_SUFF_LIB) \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/DisasmR0$(VBOX_SUFF_LIB)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncifneq ($(filter pe lx,$(VBOX_LDR_FMT)),)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncVMMR0_LIBS += \
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync $(PATH_LIB)/SUPR0$(VBOX_SUFF_LIB)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsyncinclude $(PATH_KBUILD)/subfooter.kmk
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# Alias the PGM templates to the object in which they are defined.