# Sub-Makefile for the storage device & driver testcases.
# Copyright (C) 2006-2012 Oracle Corporation
# This file is part of VirtualBox Open Source Edition (OSE), as
# 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.
# vditool - useful too for manipulating VDIs, but now pretty obsolete and
# probably will go away soon. Testcase only now.
if defined(VBOX_WITH_TESTCASES) || defined(VBOX_WITH_VDITOOL)
vditool_TEMPLATE = VBOXR3TSTEXE
vditool_LIBS = $(LIB_DDU)
# Basic testcases for the VD code.
ifdef VBOX_WITH_TESTCASES
PROGRAMS += tstVD tstVD-2 tstVDCopy tstVDSnap tstVDShareable
tstVD_TEMPLATE = VBOXR3TSTEXE
tstVD-2_TEMPLATE = VBOXR3TSTEXE
tstVD-2_LIBS = $(LIB_DDU)
tstVDCopy_TEMPLATE = VBOXR3TSTEXE
tstVDCopy_LIBS = $(LIB_DDU)
# VD I/O test scripts to built in -> .cpp
TSTVDIO_BUILTIN_TESTS := \
TSTVDIO_BUILTIN_TEST_NAMES := $(foreach test,$(TSTVDIO_BUILTIN_TESTS),$(firstword $(subst =,$(SPACE) ,$(test))))
TSTVDIO_PATH_TESTS := $(PATH_SUB_CURRENT)
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)))) \
$(QUIET)$(RM) -f -- $@ $@.vd
$(QUIET)$(APPEND) -n "$@" \
$(foreach test,$(TSTVDIO_BUILTIN_TESTS), $(NLTAB)$(VBOX_BIN2C) -ascii --append \
"$(firstword $(subst =,$(SP) ,$(test)))" \
"$(TSTVDIO_PATH_TESTS)/$(lastword $(subst =,$(SP) ,$(test)))" \
$(QUIET)$(APPEND) -n "$@" '' \
$(call TSTVDIO_GEN_TEST_MACRO,VDIoTests,%) \
ifn1of ($(KBUILD_TARGET), win)
VBOX_TSTVDIO_WITH_LOG_REPLAY = 1
tstVDIo_TEMPLATE = VBOXR3TSTEXE
tstVDIo_INCS := $(PATH_SUB_CURRENT)
ifdef VBOX_TSTVDIO_WITH_LOG_REPLAY
tstVDIo_DEFS += VBOX_TSTVDIO_WITH_LOG_REPLAY
$(TSTVDIO_BUILTIN_TESTS_FILE)
ifdef VBOX_TSTVDIO_WITH_LOG_REPLAY
$(PATH_STAGE_LIB)/StorageDbgLib$(VBOX_SUFF_LIB)
tstVDSetUuid_TEMPLATE = VBOXR3TSTEXE
tstVDSetUuid_LIBS = $(LIB_DDU)
tstVDShareable_TEMPLATE = VBOXR3TSTEXE
tstVDShareable_LIBS = $(LIB_DDU)
tstVDSnap_TEMPLATE = VBOXR3TSTEXE
tstVDSnap_LIBS = $(LIB_DDU)
if defined(VBOX_WITH_TESTCASES) || defined(VBOX_WITH_VBOX_IMG)
# vbox-img - static because it migth be used as at standalone tool.
vbox-img_TEMPLATE = VBoxR3Static
vbox-img_DEFS += IN_VBOXDDU IN_VBOXDDU_STATIC VBOX_HDD_NO_DYNAMIC_BACKENDS
$(VBOX_LIB_RUNTIME_STATIC)
if1of ($(KBUILD_TARGET),os2 win)
$(PATH_STAGE_LIB)/VBox-liblzf-static$(VBOX_SUFF_LIB) \
$(PATH_STAGE_LIB)/VBox-zlib-static$(VBOX_SUFF_LIB)
$(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB) \
ifeq ($(KBUILD_TARGET),linux)
ifdef SDK_VBOX_LIBXML2_LIBS
else if1of ($(KBUILD_TARGET),darwin freebsd)
else ifeq ($(KBUILD_TARGET),win)
else ifeq ($(KBUILD_TARGET),solaris)
include $(FILE_KBUILD_SUB_FOOTER)