# $Id: Makefile.kmk $ ## @file # Sub-Makefile for the storage device & driver testcases. # # # Copyright (C) 2006-2020 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. # SUB_DEPTH = ../../../.. include $(KBUILD_PATH)/subheader.kmk # # Basic testcases for the VD code. # ifdef VBOX_WITH_TESTCASES PROGRAMS += tstVD tstVD-2 tstVDSnap tstVDFill tstVD_TEMPLATE = VBOXR3TSTEXE tstVD_SOURCES = tstVD.cpp tstVD_LIBS = $(LIB_DDU) tstVD-2_TEMPLATE = VBOXR3TSTEXE tstVD-2_SOURCES = tstVD-2.cpp tstVD-2_LIBS = $(LIB_DDU) tstVDFill_TEMPLATE = VBOXR3TSTEXE tstVDFill_SOURCES = tstVDFill.cpp tstVDFill_LIBS = $(LIB_DDU) PROGRAMS += tstVDIo # # VD I/O test scripts to built in -> .cpp # TSTVDIO_BUILTIN_TESTS_FILE = $(tstVDIo_0_OUTDIR)/BuiltinTests.cpp TSTVDIO_BUILTIN_TESTS := \ tstVDIo=tstVDIo.vd \ tstVDResize=tstVDResize.vd \ tstVDCompact=tstVDCompact.vd \ tstVDCopy=tstVDCopy.vd \ tstVDDiscard=tstVDDiscard.vd \ tstVDShareable=tstVDShareable.vd TSTVDIO_BUILTIN_TEST_NAMES := $(foreach test,$(TSTVDIO_BUILTIN_TESTS),$(firstword $(subst =,$(SPACE) ,$(test)))) TSTVDIO_PATH_TESTS := $(PATH_SUB_CURRENT) # 1=name, 2=filter TSTVDIO_GEN_TEST_MACRO = 'TSTVDIOTESTENTRY const g_a$(1)[] =' '{' \ $(foreach testnm,$(filter $(2),$(TSTVDIO_BUILTIN_TEST_NAMES)), ' TSTVDIOTESTENTRY_GEN($(testnm), g_ab$(testnm)),') \ '};' 'unsigned const g_c$(1) = RT_ELEMENTS(g_a$(1));' '' '' $$(TSTVDIO_BUILTIN_TESTS_FILE): $(MAKEFILE_CURRENT) \ $(foreach test,$(TSTVDIO_BUILTIN_TESTS),$(TSTVDIO_PATH_TESTS)/$(lastword $(subst =,$(SPACE) ,$(test)))) \ $(VBOX_BIN2C) \ | $$(dir $$@) $(QUIET)$(RM) -f -- $@ $@.vd $(QUIET)$(APPEND) -n "$@" \ '' \ '#include "BuiltinTests.h"' \ '' $(foreach test,$(TSTVDIO_BUILTIN_TESTS), $(NLTAB)$(VBOX_BIN2C) -ascii --append --no-size \ "$(firstword $(subst =,$(SP) ,$(test)))" \ "$(TSTVDIO_PATH_TESTS)/$(lastword $(subst =,$(SP) ,$(test)))" \ "$@") # Generate test lists. $(QUIET)$(APPEND) -n "$@" '' \ $(call TSTVDIO_GEN_TEST_MACRO,VDIoTests,%) \ tstVDIo_TEMPLATE = VBOXR3TSTEXE tstVDIo_INCS := $(PATH_SUB_CURRENT) ifdef VBOX_TSTVDIO_WITH_LOG_REPLAY tstVDIo_DEFS += VBOX_TSTVDIO_WITH_LOG_REPLAY endif tstVDIo_SOURCES = \ tstVDIo.cpp \ VDIoBackend.cpp \ VDIoBackendMem.cpp \ VDMemDisk.cpp \ VDIoRnd.cpp \ VDScript.cpp \ VDScriptAst.cpp \ VDScriptChecker.cpp \ VDScriptInterp.cpp \ $(TSTVDIO_BUILTIN_TESTS_FILE) tstVDIo_LIBS = \ $(LIB_DDU) tstVDIo_CLEAN = \ $(TSTVDIO_BUILTIN_TESTS_FILE) tstVDSnap_TEMPLATE = VBOXR3TSTEXE tstVDSnap_LIBS = $(LIB_DDU) tstVDSnap_SOURCES = tstVDSnap.cpp endif if defined(VBOX_WITH_TESTCASES) || defined(VBOX_WITH_VBOX_IMG) PROGRAMS += vbox-img # # vbox-img - static because it might be used as a standalone tool. # vbox-img_TEMPLATE = VBoxR3Static vbox-img_DEFS += IN_VBOXDDU IN_VBOXDDU_STATIC VBOX_HDD_NO_DYNAMIC_BACKENDS vbox-img_SOURCES = \ vbox-img.cpp \ ../VD.cpp \ ../VDPlugin.cpp \ ../VDVfs.cpp \ ../VDI.cpp \ ../VMDK.cpp \ ../VHD.cpp \ ../DMG.cpp \ ../Parallels.cpp \ ../ISCSI.cpp \ ../RAW.cpp \ ../QED.cpp \ ../QCOW.cpp \ ../VHDX.cpp \ ../CUE.cpp \ ../VISO.cpp \ ../VCICache.cpp \ ../VDIfVfs.cpp vbox-img_SOURCES.win = \ vbox-img.rc vbox-img_LIBS = \ $(VBOX_LIB_RUNTIME_STATIC) if1of ($(KBUILD_TARGET),os2 win) vbox-img_LIBS += \ $(SDK_VBOX_LZF_STATIC_LIBS) \ $(SDK_VBOX_ZLIB_STATIC_LIBS) else vbox-img_LIBS += \ $(SDK_VBOX_LZF_LIBS) \ $(SDK_VBOX_ZLIB_LIBS) endif ifeq ($(KBUILD_TARGET),linux) ifdef SDK_VBOX_LIBXML2_LIBS vbox-img_LIBS += xml2 endif else ifeq ($(KBUILD_TARGET),freebsd) vbox-img_LIBS += iconv ifdef SDK_VBOX_LIBXML2_LIBS vbox-img_LIBS += xml2 lzma endif else ifeq ($(KBUILD_TARGET),darwin) vbox-img_LIBS += iconv else ifeq ($(KBUILD_TARGET),win) vbox-img_SDKS.win = VBOX_NTDLL else ifeq ($(KBUILD_TARGET),solaris) vbox-img_LIBS += kstat endif endif if defined(VBOX_WITH_TESTCASES) && defined(VBOX_WITH_PLUGIN_CRYPT) \ && defined(VBOX_WITH_EXTPACK_PUEL) && defined(VBOX_WITH_EXTPACK_PUEL_BUILD) \ && defined(VBOX_WITH_VDKEYSTOREMGR) PROGRAMS += vdkeystoremgr # # vdkeystoremgr - static because it might be used as a standalone tool. # vdkeystoremgr_TEMPLATE = VBoxR3Static vdkeystoremgr_DEFS += IN_VBOXDDU IN_VBOXDDU_STATIC VBOX_HDD_NO_DYNAMIC_BACKENDS vdkeystoremgr_SOURCES = \ vdkeystoremgr.cpp \ ../VDKeyStore.cpp vdkeystoremgr_SOURCES.win = \ vdkeystoremgr_SOURCES.rc vdkeystoremgr_LIBS = \ $(VBOX_LIB_RUNTIME_STATIC) \ $(PATH_STAGE_LIB)/SUPR3$(VBOX_SUFF_LIB) if1of ($(KBUILD_TARGET),os2 win) vdkeystoremgr_LIBS += \ $(SDK_VBOX_LZF_STATIC_LIBS) \ $(SDK_VBOX_ZLIB_STATIC_LIBS) else vdkeystoremgr_LIBS += \ $(SDK_VBOX_LZF_LIBS) \ $(SDK_VBOX_ZLIB_LIBS) endif ifeq ($(KBUILD_TARGET),linux) ifdef SDK_VBOX_LIBXML2_LIBS vdkeystoremgr_LIBS += xml2 endif else if1of ($(KBUILD_TARGET),darwin freebsd) vdkeystoremgr_LIBS += iconv else ifeq ($(KBUILD_TARGET),win) vdkeystoremgr_SDKS.win = VBOX_NTDLL else ifeq ($(KBUILD_TARGET),solaris) vdkeystoremgr_LIBS += kstat endif endif include $(FILE_KBUILD_SUB_FOOTER)