VirtualBox

source: vbox/trunk/src/VBox/VMM/Config.kmk@ 108962

Last change on this file since 108962 was 108962, checked in by vboxsync, 7 days ago

VMM/Config.kmk: Removed obsolete define VBOX_WITH_SAFE_STR (introduced in r84670).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.9 KB
Line 
1# $Id: Config.kmk 108962 2025-04-14 09:57:59Z vboxsync $
2## @file
3# kBuild Configuration file for the VMM.
4#
5
6#
7# Copyright (C) 2006-2024 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28VBOX_VMM_CONFIG_KMK_INCLUDED = 1
29
30# Include the top-level configure file.
31ifndef VBOX_ROOT_CONFIG_KMK_INCLUDED
32 include $(PATH_ROOT)/Config.kmk
33endif
34
35#
36# Globals
37#
38
39VBOX_PATH_SRC_VMM := $(PATH_ROOT)/src/VBox/VMM
40
41## DEFS variable that is picked up by all three VMM targets (R0, R3, RC).
42# Can be prepended to by setting it in LocalConfig.kmk
43VMM_COMMON_DEFS := USING_VMM_COMMON_DEFS
44ifdef VBOX_WITH_R0_MODULES
45 VMM_COMMON_DEFS += VBOX_WITH_R0_MODULES
46 ifdef VBOX_WITH_MINIMAL_R0
47 VMM_COMMON_DEFS += VBOX_WITH_MINIMAL_R0 VBOX_WITH_ONLY_PGM_NEM_MODE
48 endif
49else
50 VMM_COMMON_DEFS += VBOX_WITH_ONLY_PGM_NEM_MODE
51endif
52ifdef VBOX_WITH_HWVIRT
53 VMM_COMMON_DEFS += VBOX_WITH_HWVIRT
54endif
55ifdef VBOX_WITH_NESTED_HWVIRT_SVM
56 VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_SVM
57endif
58
59# IEM config:
60ifndef IEM_WITHOUT_3DNOW
61 VMM_COMMON_DEFS += IEM_WITH_3DNOW
62else
63 VMM_COMMON_DEFS += IEM_WITHOUT_3DNOW
64endif
65ifndef IEM_WITHOUT_THREE_0F_38
66 VMM_COMMON_DEFS += IEM_WITH_THREE_0F_38
67else
68 VMM_COMMON_DEFS += IEM_WITHOUT_THREE_0F_38
69endif
70ifndef IEM_WITHOUT_THREE_0F_3A
71 VMM_COMMON_DEFS += IEM_WITH_THREE_0F_3A
72else
73 VMM_COMMON_DEFS += IEM_WITHOUT_THREE_0F_3A
74endif
75ifndef IEM_WITHOUT_VEX
76 VMM_COMMON_DEFS += IEM_WITH_VEX
77else
78 VMM_COMMON_DEFS += IEM_WITHOUT_VEX
79endif
80ifdef VBOX_WITH_IEM_RECOMPILER # Selectely removing hwvirt doesn't work yet with the recompiler. Python code doesn't check #ifdefs.
81 VMM_COMMON_DEFS += VBOX_WITH_IEM_RECOMPILER IEM_WITH_CODE_TLB IEM_WITH_DATA_TLB
82 ifdef VBOX_WITH_IEM_NATIVE_RECOMPILER
83 VMM_COMMON_DEFS += VBOX_WITH_IEM_NATIVE_RECOMPILER
84 endif
85 VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_VMX
86 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX_EPT # Busted with TLB enabled.
87 # VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_VMX_EPT
88 #endif
89 ifdef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM
90 VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM
91 endif
92else ifdef VBOX_WITH_IEM_TLB ## @todo VMX code doesn't compile with TLBs enabled.
93 VMM_COMMON_DEFS += IEM_WITH_CODE_TLB IEM_WITH_DATA_TLB
94else
95 ifdef VBOX_WITH_NESTED_HWVIRT_VMX
96 VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_VMX
97 endif
98 ifdef VBOX_WITH_NESTED_HWVIRT_VMX_EPT
99 VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_VMX_EPT
100 endif
101 ifdef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM
102 VMM_COMMON_DEFS += VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM
103 endif
104endif
105ifdef IEM_WITHOUT_ASSEMBLY
106 VMM_COMMON_DEFS += IEM_WITHOUT_ASSEMBLY
107endif
108
109# part of global DEFS
110ifdef VBOX_WITH_MULTI_CORE
111 VMM_COMMON_DEFS += VBOX_WITH_MULTI_CORE
112endif
113ifdef VBOX_WITH_R0_LOGGING
114 VMM_COMMON_DEFS += VBOX_WITH_R0_LOGGING
115endif
116ifdef VBOX_WITH_PCI_PASSTHROUGH
117 VMM_COMMON_DEFS += VBOX_WITH_PCI_PASSTHROUGH
118endif
119ifdef VBOX_WITH_DTRACE_RC
120 VMM_COMMON_DEFS += VBOX_WITH_DTRACE_RC
121endif
122ifdef VBOX_WITH_64ON32_CMOS_DEBUG
123 VMM_COMMON_DEFS += VBOX_WITH_64ON32_CMOS_DEBUG
124endif
125ifdef VBOXSTRICTRC_STRICT_ENABLED
126 VMM_COMMON_DEFS += VBOXSTRICTRC_STRICT_ENABLED
127endif
128if defined(VBOX_WITH_NATIVE_NEM) || !defined(VBOX_WITHOUT_PGM_NEM_MODE)
129 VMM_COMMON_DEFS += VBOX_WITH_PGM_NEM_MODE
130endif
131ifdef VBOX_WITH_NATIVE_NEM
132 if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.amd64 linux.amd64 win.amd64)
133 VMM_COMMON_DEFS += VBOX_WITH_NATIVE_NEM VBOX_WITH_NEM_R0
134 endif
135endif
136if1of ($(KBUILD_TARGET), freebsd linux solaris) # Hosts that implements SUPR0HCPhysToVirt.
137 VMM_COMMON_DEFS += VBOX_WITH_LINEAR_HOST_PHYS_MEM
138endif
139
140
141# VMM_COMMON_DEFS += VBOX_WITH_NS_ACCOUNTING_STATS
142
143
144#
145# Generate macro template for IEM instruction statistics.
146#
147# @param 1 The target name.
148# @param 2 The dir to put the header in.
149#
150define def_VBoxGenIEMInstructionStatisticsTmpl_Header
151 $(1)_INTERMEDIATES += $(2)/IEMInstructionStatisticsTmpl.h
152 $(1)_CLEAN += \
153 $(2)/IEMInstructionStatisticsTmpl.h.ts \
154 $(2)/IEMInstructionStatisticsTmpl.h
155 $$(call KB_FN_AUTO_CMD_DEPS,$(2)/IEMInstructionStatisticsTmpl.h.ts)
156 $(2)/IEMInstructionStatisticsTmpl.h.ts \
157 +| $(2)/IEMInstructionStatisticsTmpl.h: \
158 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstCommon-x86.cpp.h \
159 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstOneByte-x86.cpp.h \
160 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstTwoByte0f-x86.cpp.h \
161 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstThree0f38-x86.cpp.h \
162 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstThree0f3a-x86.cpp.h \
163 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstVexMap1-x86.cpp.h \
164 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstVexMap2-x86.cpp.h \
165 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInstVexMap3-x86.cpp.h \
166 $$(VBOX_PATH_SRC_VMM)/VMMAll/target-x86/IEMAllInst3DNow-x86.cpp.h
167 $$(QUIET)$(call MSG_GENERATE,$(1),$$@,VMMAll/IEMAllInst*.cpp.h)
168 $$(QUIET)$$(RM) -f -- "[email protected]" "[email protected]" "[email protected]"
169 $$(QUIET)$$(MKDIR) -p -- "$$(dir $$@)"
170 $$(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
171 $$(QUIET)$$(SED) \
172 -e '/IEMOP_MNEMONIC\(\|[01234]\|[01234]EX\)(/!d' \
173 -e '/^ *# *define *IEMOP_MNEMONIC/d' \
174 -e ':look-for-end-of-invocation' \
175 -e '/)/bend-of-invocation' \
176 -e 'N' \
177 -e 'blook-for-end-of-invocation' \
178 -e ':end-of-invocation' \
179 -e 's/\n/ /g' \
180 -e 's/ */ /g' \
181 -e 's/^.*IEMOP_MNEMONIC\(\|[01234]\|[01234]EX\)(/IEM_DO_INSTR_STAT\1(/' \
182 -e 's/;.*$$(DOLLAR)//' \
183 --output "[email protected]" $$(filter %.cpp.h,$$^)
184 # Windows sort does some kind of seeking. So, we must use a temporary file and kmk_cat to define and undefine our macros.
185 $$(QUIET)$$(REDIRECT) -wto "[email protected]" -- sort "[email protected]"
186 $$(QUIET)$$(APPEND) -nt "$$@" \
187 '/* Warning autogenerated by VMM/Makefile.kmk. */ ' \
188 '#define IEM_DO_INSTR_STAT0(f,u,l,fd,fi) IEM_DO_INSTR_STAT(l, #l)' \
189 '#define IEM_DO_INSTR_STAT1(f,u,l,o1,fd,fi) IEM_DO_INSTR_STAT(l ## _ ## o1, #l " " #o1)' \
190 '#define IEM_DO_INSTR_STAT2(f,u,l,o1,o2,fd,fi) IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2, #l " " #o1 "," #o2)' \
191 '#define IEM_DO_INSTR_STAT3(f,u,l,o1,o2,o3,fd,fi) IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2 ## _ ## o3, #l " " #o1 "," #o2 "," #o3)' \
192 '#define IEM_DO_INSTR_STAT4(f,u,l,o1,o2,o3,o4,fd,fi) IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2 ## _ ## o3 ## _ ## o4, #l " " #o1 "," #o2 "," #o3 "," #o4)' \
193 '#define IEM_DO_INSTR_STAT0EX(s,m,f,u,l,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
194 '#define IEM_DO_INSTR_STAT1EX(s,m,f,u,l,o1,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
195 '#define IEM_DO_INSTR_STAT2EX(s,m,f,u,l,o1,o2,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
196 '#define IEM_DO_INSTR_STAT3EX(s,m,f,u,l,o1,o2,o3,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
197 '#define IEM_DO_INSTR_STAT4EX(s,m,f,u,l,o1,o2,o3,o4,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
198 ''
199 $$(QUIET)$$(REDIRECT) -ato "$$@" -- $$(CAT_EXT) "[email protected]"
200 $$(QUIET)$$(APPEND) -n "$$@" \
201 '' \
202 '#undef IEM_DO_INSTR_STAT0' \
203 '#undef IEM_DO_INSTR_STAT1' \
204 '#undef IEM_DO_INSTR_STAT2' \
205 '#undef IEM_DO_INSTR_STAT3' \
206 '#undef IEM_DO_INSTR_STAT4' \
207 '#undef IEM_DO_INSTR_STAT0EX' \
208 '#undef IEM_DO_INSTR_STAT1EX' \
209 '#undef IEM_DO_INSTR_STAT2EX' \
210 '#undef IEM_DO_INSTR_STAT3EX' \
211 '#undef IEM_DO_INSTR_STAT4EX' \
212 ''
213 $$(QUIET)$$(RM) -f -- "[email protected]" "[email protected]"
214 $$(QUIET)$$(CP) -v -f --changed -- "$$@" "$$(patsubst %.ts,%,$$@)"
215
216endef
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