[52776] | 1 | # $Id: Config.kmk 98435 2023-02-02 12:44:26Z vboxsync $
|
---|
| 2 | ## @file
|
---|
| 3 | # kBuild Configuration file for the VirtualBox Validation Kit.
|
---|
| 4 | #
|
---|
| 5 |
|
---|
| 6 | #
|
---|
[98103] | 7 | # Copyright (C) 2010-2023 Oracle and/or its affiliates.
|
---|
[52776] | 8 | #
|
---|
[96407] | 9 | # This file is part of VirtualBox base platform packages, as
|
---|
| 10 | # available from https://www.virtualbox.org.
|
---|
[52776] | 11 | #
|
---|
[96407] | 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 | #
|
---|
[52776] | 25 | # The contents of this file may alternatively be used under the terms
|
---|
| 26 | # of the Common Development and Distribution License Version 1.0
|
---|
[96407] | 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
|
---|
[52776] | 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 | #
|
---|
[96407] | 34 | # SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
|
---|
| 35 | #
|
---|
[52776] | 36 |
|
---|
| 37 | VBOX_VALIDATIONKIT_CONFIG_KMK_INCLUDED = 1
|
---|
| 38 |
|
---|
| 39 | # Include the top-level configure file.
|
---|
| 40 | ifndef VBOX_ROOT_CONFIG_KMK_INCLUDED
|
---|
| 41 | include $(PATH_ROOT)/Config.kmk
|
---|
| 42 | endif
|
---|
| 43 |
|
---|
| 44 | #
|
---|
| 45 | # Globals
|
---|
| 46 | #
|
---|
| 47 | VBOX_PATH_VALIDATIONKIT_SRC := $(PATH_ROOT)/src/VBox/ValidationKit
|
---|
| 48 |
|
---|
| 49 |
|
---|
| 50 | #
|
---|
[94968] | 51 | # Base template for Validation Kit R3 programs that drops the -static flag since we only want to use the
|
---|
| 52 | # static version of our own libraries and not the system libs.
|
---|
| 53 | #
|
---|
[98234] | 54 | TEMPLATE_VBoxValidationKitR3Base = VBox Validation Kit ring-3 program base, both guest and host.
|
---|
| 55 | TEMPLATE_VBoxValidationKitR3Base_EXTENDS = VBoxR3Static
|
---|
[94968] | 56 | ifeq ($(KBUILD_TARGET),win)
|
---|
[98234] | 57 | TEMPLATE_VBoxValidationKitR3Base_LDFLAGS = $(filter-out -IntegrityCheck, $(TEMPLATE_VBoxR3Static_LDFLAGS))
|
---|
[94968] | 58 | else ifn1of ($(KBUILD_TARGET), darwin solaris win)
|
---|
[98234] | 59 | TEMPLATE_VBoxValidationKitR3Base_CFLAGS = $(filter-out -static, $(TEMPLATE_VBoxR3Static_CFLAGS))
|
---|
| 60 | TEMPLATE_VBoxValidationKitR3Base_CXXFLAGS = $(filter-out -static, $(TEMPLATE_VBoxR3Static_CXXFLAGS))
|
---|
| 61 | TEMPLATE_VBoxValidationKitR3Base_OBJCFLAGS = $(filter-out -static, $(TEMPLATE_VBoxR3Static_OBJCFLAGS))
|
---|
| 62 | TEMPLATE_VBoxValidationKitR3Base_LDFLAGS = $(filter-out -static, $(TEMPLATE_VBoxR3Static_LDFLAGS))
|
---|
[94968] | 63 | endif
|
---|
[98234] | 64 | TEMPLATE_VBoxValidationKitR3Base_DEFS = $(filter-out VBOX_WITH_DTRACE,$(TEMPLATE_VBoxR3Static_DEFS))
|
---|
| 65 | TEMPLATE_VBoxValidationKitR3Base_LIBS = $(TEMPLATE_VBoxR3Static_LIBS)
|
---|
[94968] | 66 | if1of ($(KBUILD_TARGET), linux)
|
---|
| 67 | if $(VBOX_GCC_VERSION_CXX) < 40800
|
---|
[98234] | 68 | TEMPLATE_VBoxValidationKitR3Base_LIBS += supc++
|
---|
| 69 | TEMPLATE_VBoxValidationKitR3Base_LDTOOL = $(subst GXX,GCC,$(TEMPLATE_VBoxR3Static_TOOL))
|
---|
[94968] | 70 | endif
|
---|
| 71 | endif
|
---|
[98234] | 72 | TEMPLATE_VBoxValidationKitR3Base_LDFLAGS.darwin = $(TEMPLATE_VBoxR3Static_LDFLAGS.darwin) -framework IOKit
|
---|
[94968] | 73 |
|
---|
| 74 |
|
---|
| 75 | #
|
---|
[94861] | 76 | # Template for building ring-3 programs for the Validation Kit.
|
---|
[52776] | 77 | # These programs can run on any host or guest.
|
---|
| 78 | #
|
---|
| 79 | TEMPLATE_VBoxValidationKitR3 = VBox Validation Kit ring-3 program, both guest and host.
|
---|
[98234] | 80 | TEMPLATE_VBoxValidationKitR3_EXTENDS = VBoxValidationKitR3Base
|
---|
[52776] | 81 | TEMPLATE_VBoxValidationKitR3_EXTENDS_BY = appending
|
---|
| 82 | TEMPLATE_VBoxValidationKitR3_INST = $(INST_VALIDATIONKIT)$(KBUILD_TARGET)/$(KBUILD_TARGET_ARCH)/
|
---|
[98256] | 83 | TEMPLATE_VBoxValidationKitR3_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK) VBoxNtDll
|
---|
[52776] | 84 | TEMPLATE_VBoxValidationKitR3_DEFS = IN_RT_R3
|
---|
| 85 | TEMPLATE_VBoxValidationKitR3_LIBS.darwin = iconv
|
---|
| 86 | TEMPLATE_VBoxValidationKitR3_LIBS.freebsd = iconv
|
---|
| 87 | TEMPLATE_VBoxValidationKitR3_LIBS = \
|
---|
| 88 | $(PATH_STAGE_LIB)/RuntimeR3$(VBOX_SUFF_LIB)
|
---|
| 89 | ifeq ($(KBUILD_TARGET),solaris)
|
---|
| 90 | TEMPLATE_VBoxValidationKitR3_LIBS += \
|
---|
[98418] | 91 | kstat \
|
---|
| 92 | nsl \
|
---|
| 93 | contract
|
---|
[52776] | 94 | if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
|
---|
| 95 | TEMPLATE_VBoxValidationKitR3_LIBS += \
|
---|
| 96 | smbios
|
---|
| 97 | endif
|
---|
| 98 | endif
|
---|
| 99 | ifneq ($(KBUILD_TARGET),win)
|
---|
| 100 | TEMPLATE_VBoxValidationKitR3_LIBS += \
|
---|
[98255] | 101 | $(SDK_VBoxZlib_LIBS)
|
---|
[52776] | 102 | endif
|
---|
| 103 |
|
---|
[70377] | 104 | # Make VCC100 output work on NT3.x, NT4, W2K, XP and W2K3.
|
---|
[96472] | 105 | ifndef VBOX_WITH_NOCRT_STATIC
|
---|
[98418] | 106 | TEMPLATE_VBoxValidationKitR3_LIBS.win.x86 = \
|
---|
| 107 | $(PATH_TOOL_$(TEMPLATE_VBoxValidationKitR3_TOOL.win.x86)_LIB)/oldnames.lib \
|
---|
| 108 | $(PATH_TOOL_$(TEMPLATE_VBoxValidationKitR3_TOOL.win.x86)_LIB)/libcmt$(VBOX_VCC_CRT_TYPE).lib \
|
---|
| 109 | $(PATH_TOOL_$(TEMPLATE_VBoxValidationKitR3_TOOL.win.x86)_LIB)/libcpmt$(VBOX_VCC_CRT_TYPE).lib \
|
---|
| 110 | $(PATH_STAGE_LIB)/RuntimeR3VccTricks$(VBOX_SUFF_LIB)
|
---|
| 111 | TEMPLATE_VBoxValidationKitR3_LDFLAGS.win.x86 = \
|
---|
| 112 | -Include:_vcc100_shell32_fakes_cpp \
|
---|
| 113 | -Include:_vcc100_shell32_fakes_asm \
|
---|
| 114 | -Section:.bss,RW!K
|
---|
[96472] | 115 | endif
|
---|
[96593] | 116 | TEMPLATE_VBoxValidationKitR3_LDFLAGS.win.x86 += -NoOptIData
|
---|
[98234] | 117 | TEMPLATE_VBoxValidationKitR3_POST_CMDS.win.x86 = $(if $(eq $(tool_do),LINK_LIBRARY),,$(VBOX_PE_SET_VERSION) $(out)$$(NLTAB))$(TEMPLATE_VBoxValidationKitR3Base_POST_CMDS.win.x86)$$(NLTAB)
|
---|
| 118 | TEMPLATE_VBoxValidationKitR3_POST_CMDS.win.amd64 = $(if $(eq $(tool_do),LINK_LIBRARY),,$(VBOX_PE_SET_VERSION) $(out)$$(NLTAB))$(TEMPLATE_VBoxValidationKitR3Base_POST_CMDS.win.amd64)$$(NLTAB)
|
---|
| 119 | TEMPLATE_VBoxValidationKitR3_LNK_DEPS.win.x86 = $(if $(eq $(tool_do),LINK_LIBRARY),,$(VBOX_PE_SET_VERSION)) $(TEMPLATE_VBoxValidationKitR3Base_LNK_DEPS.win.x86)
|
---|
| 120 | TEMPLATE_VBoxValidationKitR3_LNK_DEPS.win.amd64 = $(if $(eq $(tool_do),LINK_LIBRARY),,$(VBOX_PE_SET_VERSION)) $(TEMPLATE_VBoxValidationKitR3Base_LNK_DEPS.win.amd64)
|
---|
[52776] | 121 |
|
---|
[98193] | 122 | #TODO: TEMPLATE_VBoxValidationKitR3_EXTENDS = VBoxGuestR3Exe
|
---|
[52776] | 123 |
|
---|
[97385] | 124 | TEMPLATE_VBoxValidationKitR3_USES.win += vboximportchecker
|
---|
[70510] | 125 | TEMPLATE_VBoxValidationKitR3_VBOX_IMPORT_CHECKER.win.x86 = nt31
|
---|
[70377] | 126 | TEMPLATE_VBoxValidationKitR3_VBOX_IMPORT_CHECKER.win.amd64 = xp64
|
---|
[52776] | 127 |
|
---|
[70377] | 128 |
|
---|
[52776] | 129 | #
|
---|
[94968] | 130 | # Template for ring-3 testcases to be included on the Validation Kit .ISO.
|
---|
| 131 | #
|
---|
| 132 | # Needed for running the ring-3 testcases on older guests (like NT4 / XP).
|
---|
| 133 | # Those testcases then run as part of the Validation Kit and are included on the Validation Kit .ISO.
|
---|
| 134 | # See @bugref:10195.
|
---|
| 135 | #
|
---|
| 136 | TEMPLATE_VBoxValidationKitR3TstExe = VBox Ring 3 Testcase Exe for Validation Kit .ISO
|
---|
| 137 | TEMPLATE_VBoxValidationKitR3TstExe_EXTENDS = VBoxValidationKitR3
|
---|
| 138 | TEMPLATE_VBoxValidationKitR3TstExe_INST = $(INST_VALIDATIONKIT)/testcase/$(KBUILD_TARGET)/$(KBUILD_TARGET_ARCH)/testcase/
|
---|
| 139 |
|
---|
| 140 |
|
---|
| 141 | #
|
---|
[70377] | 142 | # Template for building ring-3 programs for the Validation Kit.
|
---|
[83944] | 143 | # When these programs run on the host they may take advantage of the
|
---|
| 144 | # support driver if installed.
|
---|
[52776] | 145 | #
|
---|
[83944] | 146 | TEMPLATE_VBoxValidationKitR3SupDrv = VBox Validation Kit ring-3 program, mainly host.
|
---|
| 147 | TEMPLATE_VBoxValidationKitR3SupDrv_EXTENDS = VBoxValidationKitR3
|
---|
| 148 | TEMPLATE_VBoxValidationKitR3SupDrv_EXTENDS_BY = appending
|
---|
| 149 | TEMPLATE_VBoxValidationKitR3SupDrv_DEFS = IN_SUP_R3
|
---|
| 150 | TEMPLATE_VBoxValidationKitR3SupDrv_LIBS = \
|
---|
[52776] | 151 | $(PATH_STAGE_LIB)/SUPR3Static$(VBOX_SUFF_LIB) \
|
---|
| 152 | $(PATH_STAGE_LIB)/RuntimeR3$(VBOX_SUFF_LIB)
|
---|
[96509] | 153 | ifndef VBOX_WITH_NOCRT_STATIC
|
---|
[98418] | 154 | TEMPLATE_VBoxValidationKitR3SupDrv_LDFLAGS.win.x86 = \
|
---|
| 155 | -Include:_vcc100_ntdll_fakes_cpp \
|
---|
| 156 | -Include:_vcc100_ntdll_fakes_asm
|
---|
[96509] | 157 | endif
|
---|
[52776] | 158 |
|
---|
| 159 | #
|
---|
| 160 | # Template for building agnostic ring-0 host modules for the Validation Kit.
|
---|
| 161 | #
|
---|
| 162 | TEMPLATE_VBoxValidationKitR0 = VBox Validation Kit agnostic ring-0 host module.
|
---|
| 163 | TEMPLATE_VBoxValidationKitR0_EXTENDS = VBoxR0
|
---|
| 164 | TEMPLATE_VBoxValidationKitR0_EXTENDS_BY = appending
|
---|
| 165 | TEMPLATE_VBoxValidationKitR0_INST = $(INST_VALIDATIONKIT)$(KBUILD_TARGET)/$(KBUILD_TARGET_ARCH)/
|
---|
| 166 | TEMPLATE_VBoxValidationKitR0_DEFS = IN_RT_R0
|
---|
| 167 | TEMPLATE_VBoxValidationKitR0_LIBS = \
|
---|
[91768] | 168 | $(PATH_STAGE_LIB)/RuntimeR0$(VBOX_SUFF_LIB) \
|
---|
| 169 | $(VBOX_LIB_SUPR0)
|
---|
[52776] | 170 |
|
---|
| 171 | #
|
---|
| 172 | # List of python sources that should be linted and unittested.
|
---|
| 173 | #
|
---|
| 174 | VBOX_VALIDATIONKIT_PYTHON_SOURCES :=
|
---|
| 175 | VBOX_VALIDATIONKIT_PYLINT_TARGETS :=
|
---|
| 176 | VBOX_VALIDATIONKIT_PYUNITTEST_EXCLUDE :=
|
---|
| 177 |
|
---|
| 178 | ifdef VBOX_WITH_PYLINT
|
---|
| 179 | TESTING +=
|
---|
| 180 | endif
|
---|
| 181 |
|
---|
| 182 | #
|
---|
| 183 | # Process python sources.
|
---|
| 184 | #
|
---|
| 185 | if1of ($(KBUILD_TARGET), win os2)
|
---|
[79067] | 186 | VBOX_PYTHONPATH_VALIDATIONKIT = $(PYTHONPATH);$(VBOX_PATH_VALIDATIONKIT_SRC);$(VBOX_PATH_VALIDATIONKIT_SRC)/testboxscript;$(VBOX_PATH_VALIDATIONKIT_SRC)/testmanager;$(VBOX_PATH_VALIDATIONKIT_SRC)/tests/additions;$(VBOX_PATH_VALIDATIONKIT_SRC)/../VMM/VMMAll
|
---|
[52776] | 187 | else
|
---|
[79067] | 188 | VBOX_PYTHONPATH_VALIDATIONKIT = $(PYTHONPATH):$(VBOX_PATH_VALIDATIONKIT_SRC):$(VBOX_PATH_VALIDATIONKIT_SRC)/testboxscript:$(VBOX_PATH_VALIDATIONKIT_SRC)/testmanager:$(VBOX_PATH_VALIDATIONKIT_SRC)/tests/additions:$(VBOX_PATH_VALIDATIONKIT_SRC)/../VMM/VMMAll
|
---|
[52776] | 189 | endif
|
---|
| 190 | BLDDIRS += $(PATH_TARGET)/pylint $(PATH_TARGET)/pyunittest
|
---|
| 191 |
|
---|
| 192 | define def_vbox_validationkit_py_check
|
---|
[98418] | 193 | $(eval name:=$(basename $(notdir $(py))))
|
---|
[52776] | 194 |
|
---|
[98418] | 195 | pylint: $(name)-py-phony.o
|
---|
| 196 | $(name).o: $(name)-py-phony.o
|
---|
| 197 | $(PATH_TARGET)/pylint/$(name).o $(name)-py-phony.o:: $(py) | $(PATH_TARGET)/pylint/
|
---|
| 198 | ifdef VBOX_WITH_PYLINT
|
---|
[52776] | 199 | $(QUIET2)$(call MSG_L1,Subjecting $(py) to pylint...)
|
---|
| 200 | $(QUIET)$(REDIRECT) -C "$(dir $(py))" -E LC_ALL=C -E PYTHONPATH="$(VBOX_PYTHONPATH_VALIDATIONKIT)" -- \
|
---|
| 201 | $(VBOX_PYLINT) --rcfile=$(VBOX_PATH_VALIDATIONKIT_SRC)/pylintrc $$(VBOX_PYLINT_FLAGS) $$($(py)_VBOX_PYLINT_FLAGS) ./$(notdir $(py))
|
---|
[98418] | 202 | endif
|
---|
[52776] | 203 | $(QUIET)$(APPEND) -t "$(PATH_TARGET)/pylint/$(name).o"
|
---|
| 204 |
|
---|
[98418] | 205 | ifn1of ($(py), $(VBOX_VALIDATIONKIT_PYUNITTEST_EXCLUDE))
|
---|
| 206 | pyunittest: $(name)-pyunittest.o
|
---|
| 207 | $(PATH_TARGET)/pyunittest/$(name).o $(name)-pyunittest.o:: $(py) | $(PATH_TARGET)/pyunittest/
|
---|
[52776] | 208 | $(QUIET2)$(call MSG_L1,Unittesting Python source $(py)...)
|
---|
| 209 | $(QUIET)$(REDIRECT) -E LC_ALL=C -E PYTHONPATH="$(VBOX_PYTHONPATH_VALIDATIONKIT)" -C $(dir $(py)) \
|
---|
[82985] | 210 | -- $(VBOX_UNITTEST_PYTHON) -m unittest -v $(notdir $(basename $(py)))
|
---|
[52776] | 211 | $(QUIET)$(APPEND) -t "$(PATH_TARGET)/pyunittest/$(name).o"
|
---|
[98418] | 212 | VBOX_VALIDATIONKIT_PYUNITTEST_TARGETS += $(PATH_TARGET)/pyunittest/$(name).o
|
---|
[52776] | 213 |
|
---|
[98418] | 214 | TESTING += $(name)-pyunittest.o
|
---|
| 215 | endif
|
---|
| 216 | TESTING += $(name)-py-phony.o
|
---|
| 217 | VBOX_VALIDATIONKIT_PYLINT_TARGETS += $(PATH_TARGET)/pylint/$(name).o
|
---|
[52776] | 218 | endef # def_vbox_validationkit_py_check
|
---|
| 219 |
|
---|
| 220 |
|
---|
| 221 | define def_vbox_validationkit_process_python_sources
|
---|
[98435] | 222 | if $(words $(_SUB_MAKEFILE_STACK)) <= 0 || "$1" == "FORCE"
|
---|
| 223 | $(foreach py, $(VBOX_VALIDATIONKIT_PYTHON_SOURCES), $(eval $(def_vbox_validationkit_py_check)))
|
---|
| 224 | endif
|
---|
[52776] | 225 | endef
|
---|
| 226 |
|
---|
| 227 |
|
---|
| 228 |
|
---|
| 229 | #
|
---|
| 230 | # http://www.jshint.com
|
---|
| 231 | #
|
---|
| 232 | VBOX_JSHINT ?= jshint
|
---|
| 233 | VBOX_JSHINT_FLAGS := --config $(VBOX_PATH_VALIDATIONKIT_SRC)/jshintrc.js --verbose
|
---|
| 234 | ifndef VBOX_WITH_JSHINT
|
---|
| 235 | VBOX_WITH_JSHINT := $(which $(VBOX_JSHINT))
|
---|
| 236 | endif
|
---|
| 237 |
|
---|
| 238 | #
|
---|
| 239 | # List of javascript sources that should be checked and linted.
|
---|
| 240 | #
|
---|
| 241 | VBOX_VALIDATIONKIT_JS_SOURCES :=
|
---|
| 242 |
|
---|
| 243 | define def_vbox_validationkit_js_check
|
---|
[98418] | 244 | $(eval name:=$(basename $(notdir $(js))))
|
---|
| 245 | $(name).o $(name).obj: # $(PATH_SUB_CURRENT)/$(js)
|
---|
[52776] | 246 | -$(REDIRECT) -E LC_ALL=C -C $(dir $(js)) -- $$(VBOX_JSHINT) ./$(notdir $(js)) $$(VBOX_JSHINT_FLAGS)
|
---|
[98418] | 247 | jslint: $(name).o
|
---|
[52776] | 248 | endef
|
---|
| 249 |
|
---|
[84631] | 250 | ifdef VBOX_WITH_JSHINT
|
---|
[98418] | 251 | define def_vbox_validationkit_process_js_sources
|
---|
[98435] | 252 | if $(words $(_SUB_MAKEFILE_STACK)) <= 0
|
---|
| 253 | $(foreach js, $(VBOX_VALIDATIONKIT_JS_SOURCES), $(eval $(def_vbox_validationkit_js_check)))
|
---|
| 254 | endif
|
---|
[98418] | 255 | endef
|
---|
[84631] | 256 | endif
|
---|
[96246] | 257 |
|
---|
| 258 |
|
---|
| 259 | #
|
---|
| 260 | # List of IPRT testcases that will be included in the ValKit.
|
---|
| 261 | #
|
---|
| 262 | ifdef VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING
|
---|
| 263 | VALKIT_UNITTESTS_WHITELIST_IPRT := \
|
---|
| 264 | tstFile \
|
---|
| 265 | tstFileLock \
|
---|
| 266 | tstRTPathQueryInfo \
|
---|
| 267 | tstRTPipe \
|
---|
| 268 | tstRTProcCreateEx \
|
---|
| 269 | tstRTProcCreatePrf \
|
---|
| 270 | tstRTProcQueryUsername \
|
---|
| 271 | tstThread-1 \
|
---|
| 272 | tstUtf8
|
---|
| 273 |
|
---|
| 274 | VALKIT_UNITTESTS_WHITELIST_IPRT.linux += \
|
---|
| 275 | tstRTProcWait \
|
---|
| 276 | tstRTProcIsRunningByName
|
---|
| 277 |
|
---|
| 278 | VALKIT_UNITTESTS_WHITELIST_IPRT.win += \
|
---|
| 279 | tstRTProcWait
|
---|
| 280 |
|
---|
| 281 | endif # VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING
|
---|
| 282 |
|
---|