VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/Makefile.kmk@ 105332

Last change on this file since 105332 was 103177, checked in by vboxsync, 9 months ago

Validation Kit: Added a new tool 'VBoxGuestControlHelper', which can assist with tasks when testing Guest Control functionality where an external process needs to be involved. This currently only is being shipped on the Validation Kit ISO (Windows-only) to print + return the current Windows session ID the process is running in. bugref:10586

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 17.2 KB
Line 
1# $Id: Makefile.kmk 103177 2024-02-02 14:47:21Z vboxsync $
2## @file
3# VirtualBox Validation Kit.
4#
5
6#
7# Copyright (C) 2006-2023 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# The contents of this file may alternatively be used under the terms
26# of the Common Development and Distribution License Version 1.0
27# (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28# in the VirtualBox distribution, in which case the provisions of the
29# CDDL are applicable instead of those of the GPL.
30#
31# You may elect to license modified versions of this file under the
32# terms and conditions of either the GPL or the CDDL or both.
33#
34# SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35#
36
37SUB_DEPTH = ../../..
38include $(KBUILD_PATH)/subheader.kmk
39
40# Make sure our Config.kmk is included.
41ifndef VBOX_VALIDATIONKIT_CONFIG_KMK_INCLUDED
42 include $(PATH_SUB_CURRENT)/Config.kmk
43endif
44
45# Collect install targets
46VBOX_VALIDATIONKIT_INSTALLS := $(INSTALLS)
47
48#
49# Include sub-makefiles.
50#
51include $(PATH_SUB_CURRENT)/tests/Makefile.kmk
52ifneq ($(KBUILD_HOST),os2) # needs yasm
53 if1of ($(KBUILD_TARGET_ARCH), amd64 x86 arm64) # needs yasm
54 ifn1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), linux.arm64) # No yasm for linux.arm64 right now
55 include $(PATH_SUB_CURRENT)/bootsectors/Makefile.kmk
56 endif
57 endif
58endif
59include $(PATH_SUB_CURRENT)/utils/Makefile.kmk
60include $(PATH_SUB_CURRENT)/common/Makefile.kmk
61include $(PATH_SUB_CURRENT)/testboxscript/Makefile.kmk
62include $(PATH_SUB_CURRENT)/testdriver/Makefile.kmk
63include $(PATH_SUB_CURRENT)/testmanager/Makefile.kmk
64
65#
66# Globals.
67#
68
69# The current target is enabled by default.
70VBOX_WITH_VALIDATIONKIT_PACKING.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = 1
71ifdef VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING
72 VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = 1
73endif
74
75#
76# Install the test driver framework.
77#
78INSTALLS += ValidationKit-testdriver
79ValidationKit-testdriver_TEMPLATE = VBoxValidationKitR3
80ValidationKit-testdriver_INST = $(INST_VALIDATIONKIT)testdriver/
81ValidationKit-testdriver_MODE = a+r,u+w
82ValidationKit-testdriver_SOURCES := \
83 $(PATH_SUB_CURRENT)/testdriver/__init__.py \
84 $(PATH_SUB_CURRENT)/testdriver/base.py \
85 $(PATH_SUB_CURRENT)/testdriver/btresolver.py \
86 $(PATH_SUB_CURRENT)/testdriver/reporter.py \
87 $(PATH_SUB_CURRENT)/testdriver/testfileset.py \
88 $(PATH_SUB_CURRENT)/testdriver/tst-txsclient.py \
89 $(PATH_SUB_CURRENT)/testdriver/txsclient.py \
90 $(PATH_SUB_CURRENT)/testdriver/vbox.py \
91 $(PATH_SUB_CURRENT)/testdriver/vboxcon.py \
92 $(PATH_SUB_CURRENT)/testdriver/vboxtestfileset.py \
93 $(PATH_SUB_CURRENT)/testdriver/vboxtestvms.py \
94 $(PATH_SUB_CURRENT)/testdriver/vboxwrappers.py \
95 $(PATH_SUB_CURRENT)/testdriver/winbase.py \
96 $(PATH_SUB_CURRENT)/testdriver/win-vbox-net-uninstall.ps1
97ValidationKit-testdriver_EXEC_SOURCES := \
98 $(PATH_SUB_CURRENT)/testdriver/vboxinstaller.py
99$(PATH_SUB_CURRENT)/testdriver/txsclient.py_VBOX_PYCHECKER_FLAGS = --no-reimport
100
101
102#
103# Packing target.
104#
105ifndef VBOX_WITHOUT_VALIDATIONKIT_ZIP
106
107 VBOX_VALIDATIONKIT_INSTALLS := $(filter-out $(VBOX_VALIDATIONKIT_INSTALLS), $(INSTALLS))
108
109 #
110 # VBoxValidationKit.zip.
111 # TODO: Don't pack the python stuff multiple times? Lazy works for now.
112 #
113 PACKING += $(PATH_OUT)/VBoxValidationKit.zip
114 $(PATH_OUT)/VBoxValidationKit.zip: \
115 $(VBOX_PATH_VALIDATIONKIT)/VBoxValidationKit.iso \
116 $(VBOX_PATH_VALIDATIONKIT)/ \
117 $$(foreach inst, $$(VBOX_VALIDATIONKIT_INSTALLS), \
118 $$(filter $(PATH_STAGE)/$(INST_VALIDATIONKIT)%, $$($$(inst)_2_STAGE_TARGETS)))
119 $(call MSG_L1,Packing the Test Suite $@)
120 $(QUIET)$(RM) -f $@
121 # Note: Exclude packing the testcase directory into .zip, as that directory only needs to be
122 # included in VBoxValidationKit.iso.
123 $(foreach os, darwin freebsd linux os2 solaris win,$(foreach arch, x86 amd64 arm64\
124 ,$(if-expr defined(VBOX_WITH_VALIDATIONKIT_PACKING.$(os).$(arch))\
125 ,$(NLTAB)$(QUIET)$(REDIRECT) -C $(PATH_OUT_BASE)/$(os).$(arch)/$(KBUILD_TYPE)/ \
126 -- $(VBOX_ZIP) -r9 $@ $(INST_VALIDATIONKIT) -x '$(INST_VALIDATIONKIT)testcase/*' -x '*.pyc',)))
127
128 #
129 # VBoxTestBoxScript.zip - For setting up the testboxes.
130 #
131 PACKING += $(PATH_OUT)/VBoxTestBoxScript.zip
132 $(PATH_OUT)/VBoxTestBoxScript.zip: \
133 $$(testboxscript_2_STAGE_TARGETS) \
134 $$(testboxscript-common_2_STAGE_TARGETS) \
135 $$(TestBoxHelper_2_STAGE_TARGETS)
136 $(call MSG_L1,Packing the TestBox Script files to $@)
137 $(QUIET)$(RM) -f $@
138 $(foreach os, darwin freebsd linux os2 solaris win,$(foreach arch, x86 amd64 arm64\
139 ,$(if-expr defined(VBOX_WITH_VALIDATIONKIT_PACKING.$(os).$(arch))\
140 ,$(NLTAB)$(QUIET)$(REDIRECT) -C $(PATH_OUT_BASE)/$(os).$(arch)/$(KBUILD_TYPE)/ \
141 -- $(VBOX_ZIP) -r9X $@ $(INST_TESTBOXSCRIPT) -x '*.pyc',)))
142
143endif # !VBOX_WITHOUT_VALIDATIONKIT_ZIP
144
145
146#
147# Automatically lint python code and python unit tests during build.
148#
149if defined(VBOX_WITH_PYLINT) && !defined(VBOX_WITHOUT_AUTO_PYLINT)
150 OTHERS += $(PATH_TARGET)/pylint.run
151 OTHER_CLEAN += $(PATH_TARGET)/pylint.run
152 $(PATH_TARGET)/pylint.run: $$(filter-out %/testboxscript.o, $$(VBOX_VALIDATIONKIT_PYLINT_TARGETS))
153 $(QUIET)$(APPEND) -t "$@"
154endif
155if defined(VBOX_WITH_PYLINT) && !defined(VBOX_WITHOUT_AUTO_PYUNITTEST) # Tied to pylint for hysterical raisins.
156 OTHERS += $(PATH_TARGET)/pyunittest.run
157 OTHER_CLEAN += $(PATH_TARGET)/pyunittest.run
158 $(PATH_TARGET)/pyunittest.run: $$(VBOX_VALIDATIONKIT_PYUNITTEST_TARGETS)
159 $(QUIET)$(APPEND) -t "$@"
160endif
161
162$(evalcall def_vbox_validationkit_process_python_sources,FORCE)
163$(evalcall def_vbox_validationkit_process_js_sources,FORCE)
164include $(FILE_KBUILD_SUB_FOOTER)
165
166
167VBOX_VALIDATIONKIT_ISO_RSP = $(PATH_TARGET)/VBoxValidationKitISO.rsp
168OTHERS_CLEAN += $(VBOX_VALIDATIONKIT_ISO_RSP)
169
170#
171# Construct the file spec for creating the Validation Kit guest iso.
172#
173VBOX_VALIDATIONKIT_FILESPEC = \
174 valkit.txt=$(VBOX_PATH_VALIDATIONKIT_SRC)/docs/valkit.txt \
175 $(VBOX_PATH_VALIDATIONKIT)/vboxtxs-readme.txt
176ifneq ($(KBUILD_HOST),os2)
177 if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
178 VBOX_VALIDATIONKIT_FILESPEC += \
179 $(VBOX_PATH_VALIDATIONKIT)/bootsectors/bootsector-pae.img \
180 $(VBOX_PATH_VALIDATIONKIT)/bootsectors/bootsector-shutdown.img
181 endif
182endif
183
184VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS =
185
186# Generate VBOX_PATH_VALIDATIONKIT.os.arch variables.
187$(foreach os, darwin freebsd linux os2 solaris win,$(foreach arch, x86 amd64 arm64, \
188 $(eval VBOX_PATH_VALIDATIONKIT.$(os).$(arch) = $(PATH_OUT_BASE)/$(os).$(arch)/$(KBUILD_TYPE)/$(INST_VALIDATIONKIT)$(os)/$(arch)) \
189 $(eval VBOX_PATH_VALIDATIONKIT_UNITTESTS.$(os).$(arch) = $(abspath $(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/../../testcase/$(os)/$(arch)/testcase)) \
190))
191
192# Common files first.
193define def_vbox_validationkit_common_files
194 ifdef VBOX_WITH_VALIDATIONKIT_PACKING.$(os).$(arch)
195 VBOX_VALIDATIONKIT_FILESPEC += \
196 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/cpu-alloc-all-mem$(TMP_SUFF_EXE) \
197 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/cpu-numa$(TMP_SUFF_EXE) \
198 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/FsPerf$(TMP_SUFF_EXE) \
199 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/IoPerf$(TMP_SUFF_EXE) \
200 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/NetPerf$(TMP_SUFF_EXE) \
201 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/LoadGenerator$(TMP_SUFF_EXE) \
202 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/SerialTest$(TMP_SUFF_EXE) \
203 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/TestExecService$(TMP_SUFF_EXE) \
204 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vts_rm$(TMP_SUFF_EXE) \
205 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vts_shutdown$(TMP_SUFF_EXE) \
206 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vts_tar$(TMP_SUFF_EXE)
207 if1of ($(arch), amd64) ## HACK ALERT! This mirrors VBOX_WITH_R0_MODULES logic in /Config.kmk.
208 VBOX_VALIDATIONKIT_FILESPEC += \
209 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/loadgeneratorR0.r0
210 endif
211 ifn1of ($(os).$(arch), os2.x86 linux.arm64) ## not compiling bootsectors, no yasm. could fix this better.
212 VBOX_VALIDATIONKIT_FILESPEC += \
213 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/bs3-timing-1$(TMP_SUFF_EXE)
214 endif
215 ifn1of ($(os), os2 freebsd netbsd openbsd) ## must match utils/audio/Makefile.kmk
216 VBOX_VALIDATIONKIT_FILESPEC += \
217 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vkat$(TMP_SUFF_EXE)
218 endif
219 if1of ($(os), win) ## must match utils/guestcontrol/Makefile.kmk
220 VBOX_VALIDATIONKIT_FILESPEC += \
221 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/VBoxGuestControlHelper$(TMP_SUFF_EXE)
222 endif
223 ifn1of ($(arch), arm64)
224 VBOX_VALIDATIONKIT_FILESPEC += \
225 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/exceptionsR3$(TMP_SUFF_EXE) \
226 $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/xmmsaving$(TMP_SUFF_EXE)
227 endif
228 endif
229endef
230
231TMP_SUFF_EXE = .exe
232$(foreach os, os2 win,$(foreach arch, x86 amd64, \
233 $(eval $(def_vbox_validationkit_common_files)) \
234))
235TMP_SUFF_EXE =
236$(foreach os, darwin freebsd linux solaris,$(foreach arch, x86 amd64 arm64, \
237 $(eval $(def_vbox_validationkit_common_files)) \
238))
239
240# OS specific files - Linux
241ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.x86
242 VBOX_VALIDATIONKIT_FILESPEC += \
243 $(VBOX_PATH_VALIDATIONKIT.linux.x86)/UsbTest
244endif
245ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.amd64
246 VBOX_VALIDATIONKIT_FILESPEC += \
247 $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/UsbTest
248endif
249ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.x86
250 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.x86)/../vboxtxs)
251 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.x86)/../vboxtxs-nat)
252 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.x86)/../vboxtxs.service)
253
254else ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.amd64
255 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/../vboxtxs)
256 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/../vboxtxs-nat)
257 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/../vboxtxs.service)
258endif
259
260# OS specific files - OS/2
261ifdef VBOX_WITH_VALIDATIONKIT_PACKING.os2.x86
262 VBOX_VALIDATIONKIT_FILESPEC += \
263 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc06.dll \
264 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc061.dll \
265 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc062.dll \
266 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc063.dll \
267 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc064.dll \
268 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc065.dll \
269 $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc066.dll
270endif
271
272# OS specific files - Solaris
273ifdef VBOX_WITH_VALIDATIONKIT_PACKING.solaris.x86
274 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/../vboxtxs.sh)
275 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/../vboxtxs.xml)
276 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/../vboxtxs-sol10.xml)
277else ifdef VBOX_WITH_VALIDATIONKIT_PACKING.solaris.amd64
278 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/../vboxtxs.sh)
279 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/../vboxtxs.xml)
280 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/../vboxtxs-sol10.xml)
281endif
282
283# OS specific files - Windows
284ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.x86
285 VBOX_VALIDATIONKIT_FILESPEC += \
286 $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntSetFreq.exe \
287 $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntTimeSources.exe \
288 $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntDisplay.exe
289 # Disabled for now; does not work without WinMM.dll export verification files.
290 #ifdef VBOX_WITH_AUDIO_VALIDATIONKIT
291 # VBOX_VALIDATIONKIT_FILESPEC += \
292 # $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntPlayToneWaveX.exe
293 #endif
294endif
295ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.amd64
296 VBOX_VALIDATIONKIT_FILESPEC += \
297 $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntSetFreq.exe \
298 $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntTimeSources.exe \
299 $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntDisplay.exe
300 # Disabled for now; does not work without WinMM.dll export verification files.
301 #ifdef VBOX_WITH_AUDIO_VALIDATIONKIT
302 # VBOX_VALIDATIONKIT_FILESPEC += \
303 # $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntPlayToneWaveX.exe
304 #endif
305endif
306ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.x86
307 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs.cmd)
308 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs.reg)
309 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs-nat.cmd)
310 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs-nat.reg)
311else ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.amd64
312 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs.cmd)
313 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs.reg)
314 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs-nat.cmd)
315 VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs-nat.reg)
316endif
317
318#
319# If enabled, this includes specially built unit tests (statically linked, for guests) located
320# in the $(VBOX_PATH_VALIDATIONKIT)/../../testcase/ directory.
321#
322# This is useful if we want to run those on platforms where we don't have / support
323# any host support anymore (like Windows XP, for instance).
324#
325# Note that executing the tests require an additional component (tdUnitTest test driver)
326# which runs as part of the Validation Kit.
327#
328# See @bugref{10195}
329#
330ifdef VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING
331 define def_vbox_validationkit_unittests
332 # IPRT unit tests.
333 VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS += \
334 $(foreach whitelisted, $(VALKIT_UNITTESTS_WHITELIST_IPRT) $(VALKIT_UNITTESTS_WHITELIST_IPRT.$(os)), \
335 $$(wildcard $(VBOX_PATH_VALIDATIONKIT_UNITTESTS.$(os).$(arch))/$(whitelisted)$(TMP_SUFF_EXE)))
336 # Unit tests which utilize parts of the Guest Additions.
337 VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS += \
338 $(foreach whitelisted, $(VALKIT_UNITTESTS_WHITELIST_GUEST_ADDITIONS) $(VALKIT_UNITTESTS_WHITELIST_GUEST_ADDITIONS.$(os)), \
339 $$(wildcard $(VBOX_PATH_VALIDATIONKIT_UNITTESTS.$(os).$(arch))/$(whitelisted)$(TMP_SUFF_EXE)))
340 endef
341
342 TMP_SUFF_EXE = .exe
343 $(foreach os, win,$(foreach arch, x86 amd64, \
344 $(eval $(def_vbox_validationkit_unittests)) \
345 ))
346 TMP_SUFF_EXE =
347 $(foreach os, darwin freebsd linux solaris,$(foreach arch, x86 amd64 arm64, \
348 $(eval $(def_vbox_validationkit_unittests)) \
349 ))
350
351endif # VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING
352
353#
354# Build the Validation Kit guest ISO response file for RTIsoMaker.
355#
356# We need this response file because passing all those arguments to RTIsoMaker
357# will blow up the maximum command line length on some OSes.
358#
359$(VBOX_VALIDATIONKIT_ISO_RSP): | $$(dir $$@)
360 $(call MSG_L1,Creating Validation Kit guest ISO response file $@ )
361 kmk_builtin_append -nt "$@" \
362 '--iso-level=3' \
363 '--rock-ridge' \
364 '--joliet' \
365 '--rational-attribs' \
366 '--random-order-verification=2048' \
367 $(foreach spec,$(VBOX_VALIDATIONKIT_FILESPEC) \
368 ,$(if $(findstring =,$(spec)), $(spec), /$(lastword $(subst /$(INST_VALIDATIONKIT), ,$(spec))=$(spec))) ) \
369 $(foreach spec,$(VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS) \
370 ,$(if $(findstring =,$(spec)), $(spec), /$(lastword $(subst /$(INST_VALIDATIONKIT), ,$(spec))=$(spec))) ) \
371 $(foreach spec,$(filter-out %.txt %.dll %.xml %.reg %.img, $(VBOX_VALIDATIONKIT_FILESPEC)) \
372 ,--chmod=a+x:/$(lastword $(if $(findstring =,$(spec)), \
373 $(subst =, $(SP), $(spec)), \
374 $(subst /$(INST_VALIDATIONKIT), ,$(spec))))) \
375 $(foreach spec,$(filter-out %.txt %.dll %.xml %.reg %.img, $(VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS)) \
376 ,--chmod=a+x:/$(lastword $(if $(findstring =,$(spec)), \
377 $(subst =, $(SP), $(spec)), \
378 $(subst $(INST_VALIDATIONKIT), ,$(spec))))) \
379 '--volume-id="VBOXVALK_$(VBOX_SVN_REV)_$(VBOX_VERSION_STRING_RAW)"' \
380 '--name-setup=joliet' \
381 '--volume-id="VBoxValK $(VBOX_SVN_REV)"'
382
383#
384# Build the Validation Kit guest ISO.
385#
386$(VBOX_PATH_VALIDATIONKIT)/VBoxValidationKit.iso: \
387 $(filter-out %=deleteme=, $(subst =,=deleteme= , $(VBOX_VALIDATIONKIT_FILESPEC))) \
388 $(VBOX_SVN_REV_KMK) \
389 $(VBOX_PATH_VALIDATIONKIT_SRC)/Makefile.kmk \
390 $(VBOX_VALIDATIONKIT_ISO_RSP) \
391 | $(if-expr defined(VBOX_USE_RTISOMAKER),$(VBOX_RTISOMAKER),)
392 $(call MSG_TOOL,RTIsoMaker,,$@)
393 $(QUIET)$(MKDIR) -p $(@D)
394ifneq ($(KBUILD_TARGET),os2)
395 $(QUIET)$(ECHO) VBOX_VALIDATIONKIT_FILESPEC $(VBOX_VALIDATIONKIT_FILESPEC)
396endif
397ifdef VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING
398 $(foreach os, darwin linux solaris win,$(foreach arch, x86 amd64 arm64, \
399 $(call MSG_L1, VBOX_PATH_VALIDATIONKIT_UNITTESTS.$(os).$(arch): $(VBOX_PATH_VALIDATIONKIT_UNITTESTS.$(os).$(arch))) \
400 ))
401 $(call MSG_L1, VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS $(VBOX_VALIDATIONKIT_FILESPEC_UNITTESTS))
402endif
403 $(VBOX_RTISOMAKER) \
404 @$(VBOX_VALIDATIONKIT_ISO_RSP) \
405 --output $@
406
407
408
409# Alias for creating the iso.
410.PHONY: validationkit-iso
411validationkit-iso: $(VBOX_PATH_VALIDATIONKIT)/VBoxValidationKit.iso
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