summaryrefslogtreecommitdiffstats
path: root/src/VBox/ValidationKit/Makefile.kmk
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/ValidationKit/Makefile.kmk')
-rw-r--r--src/VBox/ValidationKit/Makefile.kmk309
1 files changed, 309 insertions, 0 deletions
diff --git a/src/VBox/ValidationKit/Makefile.kmk b/src/VBox/ValidationKit/Makefile.kmk
new file mode 100644
index 00000000..4a530d8b
--- /dev/null
+++ b/src/VBox/ValidationKit/Makefile.kmk
@@ -0,0 +1,309 @@
+# $Id: Makefile.kmk $
+## @file
+# VirtualBox Validation Kit.
+#
+
+#
+# Copyright (C) 2006-2019 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+# The contents of this file may alternatively be used under the terms
+# of the Common Development and Distribution License Version 1.0
+# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+# VirtualBox OSE distribution, in which case the provisions of the
+# CDDL are applicable instead of those of the GPL.
+#
+# You may elect to license modified versions of this file under the
+# terms and conditions of either the GPL or the CDDL or both.
+#
+
+SUB_DEPTH = ../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+# Make sure our Config.kmk is included.
+ifndef VBOX_VALIDATIONKIT_CONFIG_KMK_INCLUDED
+ include $(PATH_SUB_CURRENT)/Config.kmk
+endif
+
+# Collect install targets
+VBOX_VALIDATIONKIT_INSTALLS := $(INSTALLS)
+
+#
+# Include sub-makefiles.
+#
+include $(PATH_SUB_CURRENT)/tests/Makefile.kmk
+ifneq ($(KBUILD_HOST),os2) # need yasm
+ include $(PATH_SUB_CURRENT)/bootsectors/Makefile.kmk
+endif
+include $(PATH_SUB_CURRENT)/utils/Makefile.kmk
+include $(PATH_SUB_CURRENT)/common/Makefile.kmk
+include $(PATH_SUB_CURRENT)/testboxscript/Makefile.kmk
+include $(PATH_SUB_CURRENT)/testdriver/Makefile.kmk
+include $(PATH_SUB_CURRENT)/testmanager/Makefile.kmk
+
+#
+# Globals.
+#
+
+# The current target is enabled by default.
+VBOX_WITH_VALIDATIONKIT_PACKING.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = 1
+
+
+#
+# Install the test driver framework.
+#
+INSTALLS += ValidationKit-testdriver
+ValidationKit-testdriver_TEMPLATE = VBoxValidationKitR3
+ValidationKit-testdriver_INST = $(INST_VALIDATIONKIT)testdriver/
+ValidationKit-testdriver_MODE = a+r,u+w
+ValidationKit-testdriver_SOURCES := \
+ $(PATH_SUB_CURRENT)/testdriver/__init__.py \
+ $(PATH_SUB_CURRENT)/testdriver/base.py \
+ $(PATH_SUB_CURRENT)/testdriver/btresolver.py \
+ $(PATH_SUB_CURRENT)/testdriver/reporter.py \
+ $(PATH_SUB_CURRENT)/testdriver/tst-txsclient.py \
+ $(PATH_SUB_CURRENT)/testdriver/txsclient.py \
+ $(PATH_SUB_CURRENT)/testdriver/vbox.py \
+ $(PATH_SUB_CURRENT)/testdriver/vboxcon.py \
+ $(PATH_SUB_CURRENT)/testdriver/vboxtestvms.py \
+ $(PATH_SUB_CURRENT)/testdriver/vboxwrappers.py \
+ $(PATH_SUB_CURRENT)/testdriver/winbase.py \
+ $(PATH_SUB_CURRENT)/testdriver/win-vbox-net-uninstall.ps1
+ValidationKit-testdriver_EXEC_SOURCES := \
+ $(PATH_SUB_CURRENT)/testdriver/vboxinstaller.py
+$(PATH_SUB_CURRENT)/testdriver/txsclient.py_VBOX_PYCHECKER_FLAGS = --no-reimport
+
+
+#
+# Packing target.
+#
+ifndef VBOX_WITHOUT_VALIDATIONKIT_ZIP
+
+ VBOX_VALIDATIONKIT_INSTALLS := $(filter-out $(VBOX_VALIDATIONKIT_INSTALLS), $(INSTALLS))
+
+ #
+ # VBoxValidationKit.zip.
+ # TODO: Don't pack the python stuff multiple times? Lazy works for now.
+ #
+ PACKING += $(PATH_OUT)/VBoxValidationKit.zip
+ $(PATH_OUT)/VBoxValidationKit.zip: \
+ $(VBOX_PATH_VALIDATIONKIT)/VBoxValidationKit.iso \
+ $(VBOX_PATH_VALIDATIONKIT)/ \
+ $$(foreach inst, $$(VBOX_VALIDATIONKIT_INSTALLS), \
+ $$(filter $(PATH_STAGE)/$(INST_VALIDATIONKIT)%, $$($$(inst)_2_STAGE_TARGETS)))
+ $(call MSG_L1,Packing the Test Suite $@)
+ $(QUIET)$(RM) -f $@
+ $(foreach os, darwin freebsd linux os2 solaris win,$(foreach arch, x86 amd64 \
+ ,$(if-expr defined(VBOX_WITH_VALIDATIONKIT_PACKING.$(os).$(arch))\
+ ,$(NLTAB)$(QUIET)$(REDIRECT) -C $(PATH_OUT_BASE)/$(os).$(arch)/$(KBUILD_TYPE)/ \
+ -- $(VBOX_ZIP) -r9 $@ $(INST_VALIDATIONKIT) -x '*.pyc',)))
+
+ #
+ # VBoxTestBoxScript.zip - For setting up the testboxes.
+ #
+ PACKING += $(PATH_OUT)/VBoxTestBoxScript.zip
+ $(PATH_OUT)/VBoxTestBoxScript.zip: \
+ $$(testboxscript_2_STAGE_TARGETS) \
+ $$(testboxscript-common_2_STAGE_TARGETS) \
+ $$(TestBoxHelper_2_STAGE_TARGETS)
+ $(call MSG_L1,Packing the TestBox Script files to $@)
+ $(QUIET)$(RM) -f $@
+ $(foreach os, darwin freebsd linux os2 solaris win,$(foreach arch, x86 amd64 \
+ ,$(if-expr defined(VBOX_WITH_VALIDATIONKIT_PACKING.$(os).$(arch))\
+ ,$(NLTAB)$(QUIET)$(REDIRECT) -C $(PATH_OUT_BASE)/$(os).$(arch)/$(KBUILD_TYPE)/ \
+ -- $(VBOX_ZIP) -r9X $@ $(INST_TESTBOXSCRIPT) -x '*.pyc',)))
+
+endif # !VBOX_WITHOUT_VALIDATIONKIT_ZIP
+
+
+#
+# Automatically lint python code during build.
+#
+if defined(VBOX_WITH_PYLINT) && !defined(VBOX_WITHOUT_AUTO_PYLINT)
+ OTHERS += $(PATH_TARGET)/pylint.run
+ OTHER_CLEAN += $(PATH_TARGET)/pylint.run
+ $(PATH_TARGET)/pylint.run: \
+ $$(filter-out %/testboxscript.o, $$(VBOX_VALIDATIONKIT_PYLINT_TARGETS)) \
+ $$(VBOX_VALIDATIONKIT_PYUNITTEST_TARGETS)
+ $(QUIET)$(APPEND) -t "$@"
+endif
+
+$(evalcall def_vbox_validationkit_process_python_sources,FORCE)
+$(evalcall def_vbox_validationkit_process_js_sources,FORCE)
+include $(FILE_KBUILD_SUB_FOOTER)
+
+
+
+
+#
+# Construct the file spec for creating the Validation Kit guest iso.
+#
+VBOX_VALIDATIONKIT_FILESPEC = \
+ valkit.txt=$(VBOX_PATH_VALIDATIONKIT_SRC)/docs/valkit.txt \
+ $(VBOX_PATH_VALIDATIONKIT)/vboxtxs-readme.txt
+ifneq ($(KBUILD_HOST),os2)
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT)/bootsectors/bootsector-pae.img \
+ $(VBOX_PATH_VALIDATIONKIT)/bootsectors/bootsector-shutdown.img
+endif
+
+# Generate VBOX_PATH_VALIDATIONKIT.os.arch variables.
+$(foreach os, darwin freebsd linux os2 solaris win,$(foreach arch, x86 amd64, \
+ $(eval VBOX_PATH_VALIDATIONKIT.$(os).$(arch) = $(PATH_OUT_BASE)/$(os).$(arch)/$(KBUILD_TYPE)/$(INST_VALIDATIONKIT)$(os)/$(arch)) \
+))
+
+# Common files first.
+define def_vbox_validationkit_common_files
+ ifdef VBOX_WITH_VALIDATIONKIT_PACKING.$(os).$(arch)
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/exceptionsR3$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/cpu-alloc-all-mem$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/cpu-numa$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/NetPerf$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/LoadGenerator$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/loadgeneratorR0.r0 \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/TestExecService$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vts_rm$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vts_shutdown$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/vts_tar$(TMP_SUFF_EXE) \
+ $$(VBOX_PATH_VALIDATIONKIT.$(os).$(arch))/xmmsaving$(TMP_SUFF_EXE)
+ endif
+endef
+
+TMP_SUFF_EXE=.exe
+$(foreach os, os2 win,$(foreach arch, x86 amd64, \
+ $(eval $(def_vbox_validationkit_common_files)) \
+))
+TMP_SUFF_EXE=
+$(foreach os, darwin freebsd linux solaris,$(foreach arch, x86 amd64, \
+ $(eval $(def_vbox_validationkit_common_files)) \
+))
+
+# OS specific files - Linux
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.x86
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.linux.x86)/UsbTest \
+ $(VBOX_PATH_VALIDATIONKIT.linux.x86)/SerialTest
+endif
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.amd64
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/UsbTest \
+ $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/SerialTest
+endif
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.x86
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.x86)/../vboxtxs)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.x86)/../vboxtxs-nat)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.x86)/../vboxtxs.service)
+
+else ifdef VBOX_WITH_VALIDATIONKIT_PACKING.linux.amd64
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/../vboxtxs)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/../vboxtxs-nat)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.linux.amd64)/../vboxtxs.service)
+endif
+
+# OS specific files - OS/2
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.os2.x86
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc06.dll \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc061.dll \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc062.dll \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc063.dll \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc064.dll \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc065.dll \
+ $(VBOX_PATH_VALIDATIONKIT.os2.x86)/libc066.dll
+endif
+
+# OS specific files - Solaris
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.solaris.x86
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/SerialTest
+endif
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.solaris.amd64
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/SerialTest
+endif
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.solaris.x86
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/../vboxtxs.sh)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/../vboxtxs.xml)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.x86)/../vboxtxs-sol10.xml)
+else ifdef VBOX_WITH_VALIDATIONKIT_PACKING.solaris.amd64
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/../vboxtxs.sh)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/../vboxtxs.xml)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.solaris.amd64)/../vboxtxs-sol10.xml)
+endif
+
+# OS specific files - Windows
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.x86
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntSetFreq.exe \
+ $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntTimeSources.exe \
+ $(VBOX_PATH_VALIDATIONKIT.win.x86)/SerialTest.exe
+ ifdef VBOX_WITH_AUDIO_VALIDATIONKIT
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.win.x86)/ntPlayToneWaveX.exe
+ endif
+endif
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.amd64
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntSetFreq.exe \
+ $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntTimeSources.exe \
+ $(VBOX_PATH_VALIDATIONKIT.win.amd64)/SerialTest.exe
+ ifdef VBOX_WITH_AUDIO_VALIDATIONKIT
+ VBOX_VALIDATIONKIT_FILESPEC += \
+ $(VBOX_PATH_VALIDATIONKIT.win.amd64)/ntPlayToneWaveX.exe
+ endif
+endif
+ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.x86
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs.cmd)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs.reg)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs-nat.cmd)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.x86)/../vboxtxs-nat.reg)
+else ifdef VBOX_WITH_VALIDATIONKIT_PACKING.win.amd64
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs.cmd)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs.reg)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs-nat.cmd)
+ VBOX_VALIDATIONKIT_FILESPEC += $(abspath $(VBOX_PATH_VALIDATIONKIT.win.amd64)/../vboxtxs-nat.reg)
+endif
+
+
+#
+# Build the Validation Kit guest ISO.
+#
+$(VBOX_PATH_VALIDATIONKIT)/VBoxValidationKit.iso: \
+ $(filter-out %=deleteme=, $(subst =,=deleteme= , $(VBOX_VALIDATIONKIT_FILESPEC))) \
+ $(VBOX_SVN_REV_KMK) \
+ $(VBOX_PATH_VALIDATIONKIT_SRC)/Makefile.kmk \
+ | $(if-expr defined(VBOX_USE_RTISOMAKER),$(VBOX_RTISOMAKER),)
+ $(call MSG_TOOL,RTIsoMaker,,$@)
+ $(QUIET)$(MKDIR) -p $(@D)
+ifneq ($(KBUILD_TARGET),os2)
+ $(QUIET)$(ECHO) VBOX_VALIDATIONKIT_FILESPEC $(VBOX_VALIDATIONKIT_FILESPEC)
+endif
+ $(VBOX_RTISOMAKER) \
+ --output $@ \
+ --iso-level 3 \
+ --rock-ridge \
+ --joliet \
+ --rational-attribs \
+ --random-order-verification 2048 \
+ $(foreach spec,$(VBOX_VALIDATIONKIT_FILESPEC) \
+ ,$(if $(findstring =,$(spec)), $(spec), /$(lastword $(subst /$(INST_VALIDATIONKIT), ,$(spec))=$(spec))) ) \
+ $(foreach spec,$(filter-out %.txt %.dll %.xml %.reg %.img, $(VBOX_VALIDATIONKIT_FILESPEC)) \
+ ,--chmod=a+x:/$(lastword $(if $(findstring =,$(spec)), \
+ $(subst =, $(SP), $(spec)), \
+ $(subst /$(INST_VALIDATIONKIT), ,$(spec))))) \
+ --volume-id "VBOXVALK_$(VBOX_SVN_REV)_$(VBOX_VERSION_STRING_RAW)" \
+ --name-setup joliet \
+ --volume-id "VBoxValK $(VBOX_SVN_REV)"
+
+# Alias for creating the iso.
+.PHONY: validationkit-iso
+validationkit-iso: $(VBOX_PATH_VALIDATIONKIT)/VBoxValidationKit.iso
+