VirtualBox

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

Last change on this file since 36768 was 36768, checked in by vboxsync, 14 years ago

IEM: Initial commit, work in progress.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 13.9 KB
Line 
1# $Id: Makefile.kmk 36768 2011-04-20 18:33:29Z vboxsync $
2## @file
3# Sub-Makefile for the VMM testcases.
4#
5
6#
7# Copyright (C) 2006-2010 Oracle Corporation
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 (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18SUB_DEPTH = ../../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21#
22# Target lists.
23#
24PROGRAMS += tstVMStructSize tstAsmStructs
25ifdef VBOX_WITH_RAW_MODE
26 PROGRAMS += tstVMStructRC tstAsmStructsRC
27endif
28ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS
29 PROGRAMS += tstGlobalConfig tstInstrEmul
30 ifdef VBOX_WITH_RAW_MODE
31 PROGRAMS += tstVMM tstVMM-HwAccm
32 ifneq ($(KBUILD_TARGET),win)
33 PROGRAMS += tstVMMFork
34 endif
35 endif
36 ifdef VBOX_WITH_TESTCASES
37 PROGRAMS += \
38 tstCFGM \
39 tstCompressionBenchmark \
40 tstSSM \
41 tstMMHyperHeap \
42 tstVMREQ \
43 tstCompiler \
44 tstVMMR0CallHost-1 \
45 tstVMMR0CallHost-2 \
46 tstX86-1
47 ifneq ($(KBUILD_TARGET),l4)
48 PROGRAMS += tstAnimate
49 endif
50 ifdef VBOX_WITH_RAW_MODE
51 PROGRAMS += tstMicro
52 SYSMODS += tstMicroRC
53 endif
54 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
55 PROGRAMS += tstPDMAsyncCompletion
56 PROGRAMS += tstPDMAsyncCompletionStress
57 endif
58 endif # VBOX_WITH_TESTCASES
59endif # !VBOX_ONLY_EXTPACKS_USE_IMPLIBS
60
61# Where we put our temporary files (just for simplicity)
62VBOX_VMM_TESTCASE_OUT_DIR := $(PATH_TARGET)/VMM
63BLDDIRS += $(VBOX_VMM_TESTCASE_OUT_DIR)
64
65#
66# We setup two 'other' targets for executing the two structure & alignment
67# validation testcases. Perhaps a bit hackish, but extremely useful.
68#
69ifeq ($(KBUILD_TARGET),$(KBUILD_HOST))
70 ifeq ($(filter-out x86.x86 amd64.amd64 x86.amd64, $(KBUILD_TARGET_ARCH).$(KBUILD_HOST_ARCH)),)
71 OTHERS += \
72 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
73 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
74 endif
75endif
76
77# The normal testing pass.
78TESTING += \
79 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
80 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
81ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS
82 TESTING += \
83 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstInstrEmul.run
84endif
85
86OTHER_CLEAN += \
87 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
88 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run \
89 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstInstrEmul.run \
90 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.h \
91 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o \
92 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac \
93 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.o \
94 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.lst \
95 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.h.dump \
96 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h \
97 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h \
98 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h
99
100#
101# Globals
102#
103VBOX_PATH_VMM_SRC = $(PATH_ROOT)/src/VBox/VMM
104
105#
106# Targets
107#
108ifdef VBOX_WITH_RAW_MODE
109 tstVMStructRC_TEMPLATE = VBoxRcExe
110 tstVMStructRC_DEFS = IN_VMM_RC IN_DIS IN_RT_RC VBOX_WITH_RAW_MODE
111 ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86)
112 tstVMStructRC_DEFS += \
113 VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_RC \
114 VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_RC
115 endif
116 ifdef VBOX_WITH_R0_LOGGING
117 tstVMStructRC_DEFS += VBOX_WITH_R0_LOGGING
118 endif
119 ifdef VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
120 tstVMStructRC_DEFS += VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
121 endif
122 tstVMStructRC_SOURCES = tstVMStructRC.cpp
123 tstVMStructRC_INCS = \
124 $(VBOX_PATH_VMM_SRC)/include \
125 $(VBOX_PATH_VMM_SRC)/PATM
126endif
127
128tstVMStructSize_TEMPLATE= VBOXR3AUTOTST
129tstVMStructSize_DEFS = IN_VMM_R3 IN_DIS
130ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86)
131 tstVMStructSize_DEFS += \
132 VBOX_WITH_2X_4GB_ADDR_SPACE VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R3 \
133 VBOX_WITH_HYBRID_32BIT_KERNEL VBOX_WITH_HYBRID_32BIT_KERNEL_IN_R3
134endif
135ifdef VBOX_WITH_RAW_MODE
136 tstVMStructSize_DEFS += VBOX_WITH_RAW_MODE
137endif
138tstVMStructSize_INCS = \
139 $(VBOX_PATH_VMM_SRC)/include \
140 $(VBOX_PATH_VMM_SRC)/PATM \
141 $(VBOX_VMM_TESTCASE_OUT_DIR)
142tstVMStructSize_SOURCES = tstVMStructSize.cpp
143ifdef VBOX_WITH_RAW_MODE
144 tstVMStructSize.cpp_DEPS= $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h
145endif
146ifdef VBOX_WITH_R0_LOGGING
147 tstVMStructSize_DEFS += VBOX_WITH_R0_LOGGING
148endif
149ifdef VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
150 tstVMStructSize_DEFS += VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
151endif
152
153tstAsmStructs_TEMPLATE = VBOXR3AUTOTST
154tstAsmStructs_DEFS = IN_VMM_R3 IN_DIS
155ifdef VBOX_WITH_RAW_MODE
156 tstAsmStructs_DEFS += VBOX_WITH_RAW_MODE
157endif
158ifdef VBOX_WITH_R0_LOGGING
159 tstAsmStructs_DEFS += VBOX_WITH_R0_LOGGING
160endif
161ifdef VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
162 tstAsmStructs_DEFS += VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
163endif
164tstAsmStructs_INCS = \
165 $(VBOX_PATH_VMM_SRC)/include \
166 $(VBOX_VMM_TESTCASE_OUT_DIR)
167tstAsmStructs_SOURCES = tstAsmStructs.cpp
168tstAsmStructs.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h
169
170ifdef VBOX_WITH_RAW_MODE
171 tstAsmStructsRC_TEMPLATE= VBoxRcExe
172 tstAsmStructsRC_DEFS = IN_VMM_RC IN_DIS IN_RT_RC VBOX_WITH_RAW_MODE
173 ifdef VBOX_WITH_R0_LOGGING
174 tstAsmStructsRC_DEFS += VBOX_WITH_R0_LOGGING
175 endif
176 ifdef VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
177 tstAsmStructsRC_DEFS += VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
178 endif
179 tstAsmStructsRC_INCS = \
180 $(VBOX_PATH_VMM_SRC)/include \
181 $(VBOX_VMM_TESTCASE_OUT_DIR)
182 tstAsmStructsRC_SOURCES = tstAsmStructs.cpp
183 tstAsmStructs.cpp_DEPS += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h
184endif # VBOX_WITH_RAW_MODE
185
186
187tstGlobalConfig_TEMPLATE= VBOXR3TSTEXE
188tstGlobalConfig_SOURCES = tstGlobalConfig.cpp
189tstGlobalConfig_LIBS = $(LIB_RUNTIME)
190
191tstMMHyperHeap_TEMPLATE = VBOXR3TSTEXE
192tstMMHyperHeap_SOURCES = tstMMHyperHeap.cpp
193tstMMHyperHeap_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
194
195tstSSM_TEMPLATE = VBOXR3TSTEXE
196tstSSM_INCS = $(VBOX_PATH_VMM_SRC)/include
197tstSSM_SOURCES = tstSSM.cpp
198tstSSM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
199
200tstInstrEmul_TEMPLATE = VBOXR3EXE
201tstInstrEmul_SOURCES = tstInstrEmul.cpp ../VMMAll/EMAllA.asm
202tstInstrEmul_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
203
204tstCFGM_TEMPLATE = VBOXR3TSTEXE
205tstCFGM_SOURCES = tstCFGM.cpp
206tstCFGM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
207
208tstCompressionBenchmark_TEMPLATE = VBOXR3TSTEXE
209tstCompressionBenchmark_SOURCES = tstCompressionBenchmark.cpp
210
211tstVMMR0CallHost-1_TEMPLATE = VBOXR3TSTEXE
212tstVMMR0CallHost-1_DEFS = VMM_R0_NO_SWITCH_STACK
213tstVMMR0CallHost-1_INCS = $(VBOX_PATH_VMM_SRC)/include
214tstVMMR0CallHost-1_SOURCES = \
215 tstVMMR0CallHost-1.cpp
216tstVMMR0CallHost-1_SOURCES.amd64 = \
217 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-amd64.asm
218tstVMMR0CallHost-1_SOURCES.x86 = \
219 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-x86.asm
220
221tstVMMR0CallHost-2_EXTENDS = tstVMMR0CallHost-1
222tstVMMR0CallHost-2_DEFS = VMM_R0_SWITCH_STACK
223
224tstVMREQ_TEMPLATE = VBOXR3EXE
225tstVMREQ_SOURCES = tstVMREQ.cpp
226tstVMREQ_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
227
228tstAnimate_TEMPLATE = VBOXR3EXE
229tstAnimate_SOURCES = tstAnimate.cpp
230tstAnimate_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
231
232tstCompiler_TEMPLATE = VBOXR3TSTEXE
233tstCompiler_SOURCES = tstCompiler.cpp
234tstCompiler_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
235
236tstX86-1_TEMPLATE = VBOXR3TSTEXE
237tstX86-1_SOURCES = tstX86-1.cpp tstX86-1A.asm
238tstX86-1_LIBS = $(LIB_RUNTIME)
239
240ifdef VBOX_WITH_RAW_MODE
241
242 tstVMM_TEMPLATE = VBOXR3EXE
243 tstVMM_SOURCES = tstVMM.cpp
244 tstVMM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
245
246 tstVMM-HwAccm_TEMPLATE = VBOXR3EXE
247 tstVMM-HwAccm_SOURCES = tstVMM-HwAccm.cpp
248 tstVMM-HwAccm_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
249
250 tstVMMFork_TEMPLATE = VBOXR3EXE
251 tstVMMFork_SOURCES = tstVMMFork.cpp
252 tstVMMFork_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
253
254 tstMicro_TEMPLATE = VBOXR3EXE
255 tstMicro_SOURCES = tstMicro.cpp
256 tstMicro_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
257
258 tstMicroRC_TEMPLATE = VBoxRc
259 tstMicroRC_SOURCES = tstMicroRC.cpp tstMicroRCA.asm
260 tstMicroRC_DEFS =
261 tstMicroRC_INCS = $(VBOX_PATH_VMM_SRC)/testcase
262 ifeq ($(VBOX_LDR_FMT32),pe)
263 tstMicroRC_LDFLAGS = -Entry:tstMicroRC
264 endif
265 tstMicroRC_SYSSUFF = .gc
266 tstMicroRC_LIBS = \
267 $(PATH_LIB)/DisasmRC$(VBOX_SUFF_LIB) \
268 $(PATH_LIB)/RuntimeRC$(VBOX_SUFF_LIB)
269 ifeq ($(filter-out pe lx,$(VBOX_LDR_FMT32)),)
270 tstMicroRC_LIBS += \
271 $(PATH_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \
272 $(LIB_VMMGC)
273 endif
274 tstMicroRC_SOURCES.win = tstMicroRC.def
275
276endif # VBOX_WITH_RAW_MODE
277
278ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
279 tstPDMAsyncCompletion_TEMPLATE = VBOXR3EXE
280 tstPDMAsyncCompletion_INCS = $(VBOX_PATH_VMM_SRC)/include
281 tstPDMAsyncCompletion_SOURCES = tstPDMAsyncCompletion.cpp
282 tstPDMAsyncCompletion_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
283
284 tstPDMAsyncCompletionStress_TEMPLATE = VBOXR3EXE
285 tstPDMAsyncCompletionStress_INCS = $(VBOX_PATH_VMM_SRC)/include
286 tstPDMAsyncCompletionStress_SOURCES = tstPDMAsyncCompletionStress.cpp
287 tstPDMAsyncCompletionStress_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
288endif
289
290include $(KBUILD_PATH)/subfooter.kmk
291
292
293#
294# Run rule for tstInstrEmul.
295#
296$(VBOX_VMM_TESTCASE_OUT_DIR)/tstInstrEmul.run: $$(INSTARGET_tstInstrEmul) | $$(dir $$@)
297 $(QUIET)$(RM) -f $@
298 $(QUIET)$(REDIRECT) -E 'VBOX_LOG_FLAGS=disabled' -E 'VBOX_LOG_DEST=nofile' \
299 $(if $(eq $(KBUILD_TARGET),darwin), -E 'DYLD_FALLBACK_LIBRARY_PATH=$(dir $(LIB_RUNTIME))') \
300 -- \
301 $(INSTARGET_tstInstrEmul)
302 $(QUIET)$(APPEND) "$@" "done"
303
304
305#
306# Some handcrafted support targets for tstAsmStructs.
307#
308
309ifeq ($(KBUILD_HOST),win)
310 ifndef TOOL_MINGW32
311 include $(KBUILD_PATH)/tools/MINGW32.kmk
312 endif
313 VBOX_NM ?= $(PATH_TOOL_MINGW32)/bin/nm.exe -p
314else
315 VBOX_NM ?= nm -p
316endif
317
318MY_ASA_ASM_STUFF = \
319 $(addprefix -D, \
320 $(DEFS) \
321 $(DEFS.$(KBUILD_TYPE)) \
322 $(DEFS.$(KBUILD_TARGET)) \
323 IN_RING3 $(ARCH_BITS_DEFS) \
324 $(DEFS.$(KBUILD_TARGET_ARCH)) \
325 $(DEFS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) \
326 $(if $(VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI),VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI,) \
327 ) \
328 -f $(if $(eq $(KBUILD_TARGET),darwin),macho,elf) \
329 $(foreach inc,$(INCS) $(VBOX_PATH_VMM_SRC)/testcase $(VBOX_PATH_VMM_SRC)/include $(VBOX_VMM_TESTCASE_OUT_DIR)\
330 ,-I$(inc)/)
331
332# 1a. make a header file which makes all the structures+members globals.
333$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac: \
334 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm.asm \
335 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm-lst.sed \
336 $(DEPTH)/include/iprt/asmdefs.mac \
337 $(DEPTH)/include/VBox/vmm/cpum.mac \
338 $(DEPTH)/include/VBox/vmm/vm.mac \
339 $(DEPTH)/include/VBox/sup.mac \
340 $(VBOX_PATH_VMM_SRC)/include/CPUMInternal.mac \
341 $(VBOX_PATH_VMM_SRC)/include/TRPMInternal.mac \
342 $(VBOX_PATH_VMM_SRC)/include/HWACCMInternal.mac \
343 $(VBOX_PATH_VMM_SRC)/include/VMMInternal.mac \
344 $(VBOX_PATH_VMM_SRC)/testcase/Makefile.kmk \
345 $(PATH_ROOT)/Config.kmk $(LOCALCFG) $(AUTOCFG) \
346 | $$(dir $$@)
347 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
348ifndef DONT_USE_YASM
349 $(QUIET)$(TOOL_YASM_AS) $(MY_ASA_ASM_STUFF) -o $@.o -l $@.lst $<
350 $(SED) -f $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm-lst.sed --output $@ $@.lst
351else
352 $(QUIET)$(TOOL_NASM_AS) -g $(MY_ASA_ASM_STUFF) -o $@.o -l $@.lst $<
353 $(VBOX_NM) $@.o | $(SED) \
354 -e '/[0-9a-fA-F][0-9a-fA-F]* [^a] /d' \
355 -e 's/[0-9a-fA-F][0-9a-fA-F]* a \([^ ]*\)/global \1/' \
356 > $@
357endif
358
359# 1b. make an elf/macho object containing the offsets.
360$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o: \
361 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm.asm \
362 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac \
363 $(VBOX_PATH_VMM_SRC)/testcase/Makefile.kmk \
364 | $$(dir $$@)
365 $(call MSG_COMPILE,tstAsmStructsasm,$<,$@,AS)
366ifndef DONT_USE_YASM
367 $(QUIET)$(TOOL_YASM_AS) $(MY_ASA_ASM_STUFF) -DDO_GLOBALS -o $@ $<
368else
369 $(QUIET)$(TOOL_NASM_AS) $(MY_ASA_ASM_STUFF) -DDO_GLOBALS -o $@ $<
370endif
371
372# 2. use nm and sed to transform this into the header we want.
373$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o
374 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
375 $(QUIET)$(RM) -f $@ $@.dump $@.tmp
376 $(QUIET)$(REDIRECT) -wo $@.dump -- $(VBOX_NM) $<
377 $(QUIET)$(SED) -e '/STAMPROFILEADV/d' \
378 -e '/00[0-9a-fA-F]* [aA] [^_.]*\./!d' -e 's/\(00[0-9a-fA-F]*\) [aA] \([^.]*\)\.\(.*$$\)/ CHECK_OFF(\2, 0x0\1, \3);/' \
379 --output $@.tmp $@.dump
380 $(QUIET)$(SED) -e '/VM_size$$/d' -e '/VMCPU_size$$/d' \
381 -e '/00[0-9a-fA-F]* [aA] [^_.]*_size$$/!d' -e 's/\(00[0-9a-fA-F]*\) [aA] \([^_.]*\)_size/ CHECK_SIZE(\2, 0x0\1);/' \
382 --append $@.tmp $@.dump
383 $(QUIET)$(MV) -f $@.tmp $@
384 $(QUIET)$(RM) -f $@.dump
385
386ifdef VBOX_WITH_RAW_MODE
387# 3. transform the HC header into a RC one by omitting some HC only structures.
388$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h
389 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
390 $(QUIET)$(SED) -e '/VMMSWITCHERDEF/d' --output $@ $^
391endif
392
393# 4. run it.
394$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run: \
395 $$(INSTARGET_tstAsmStructs) \
396 $(if-expr defined(VBOX_WITH_RAW_MODE),$$(INSTARGET_tstAsmStructsRC),)
397 $(QUIET)$(RM) -f $@
398 $(INSTARGET_tstAsmStructs)
399ifdef VBOX_WITH_RAW_MODE
400 $(INSTARGET_tstAsmStructsRC)
401endif
402 $(QUIET)$(APPEND) "$@" "done"
403
404
405
406#
407# Run rule for tstVMStructSize.
408#
409
410ifdef VBOX_WITH_RAW_MODE
411# 1. Manually dump selected structures and members.
412$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h: $$(INSTARGET_tstVMStructRC) | $$(dir $$@)
413 $(call MSG_GENERATE,tstVMStructSize,$@)
414 $(QUIET)$(REDIRECT) -wo $@ -- $<
415endif # VBOX_WITH_RAW_MODE
416
417# 2. run it.
418$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run: $$(INSTARGET_tstVMStructSize) | $$(dir $$@)
419 $(QUIET)$(RM) -f $@
420 $<
421 $(QUIET)$(APPEND) "$@" "done"
422
423# alias for the two struct tests.
424run-struct-tests: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
425
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