# $Id$
## @file
# 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
# 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
#
# 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)
PROGRAMS += vditool
vditool_TEMPLATE = VBOXR3TSTEXE
vditool_LIBS = $(LIB_DDU)
vditool_SOURCES = vditool.cpp
endif
#
# Basic testcases for the VD code.
#
ifdef VBOX_WITH_TESTCASES
PROGRAMS += tstVD tstVD-2 tstVDCopy tstVDSnap tstVDShareable
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)
tstVDCopy_TEMPLATE = VBOXR3TSTEXE
tstVDCopy_SOURCES = tstVDCopy.cpp
tstVDCopy_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 \
"$(firstword $(subst =,$(SP) ,$(test)))" \
"$(TSTVDIO_PATH_TESTS)/$(lastword $(subst =,$(SP) ,$(test)))" \
"$@")
# Generate test lists.
$(QUIET)$(APPEND) -n "$@" '' \
$(call TSTVDIO_GEN_TEST_MACRO,VDIoTests,%) \
ifn1of ($(KBUILD_TARGET), win)
VBOX_TSTVDIO_WITH_LOG_REPLAY = 1
endif
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)
ifdef VBOX_TSTVDIO_WITH_LOG_REPLAY
tstVDIo_LIBS += \
$(PATH_STAGE_LIB)/StorageDbgLib$(VBOX_SUFF_LIB)
endif
tstVDSetUuid_TEMPLATE = VBOXR3TSTEXE
tstVDSetUuid_LIBS = $(LIB_DDU)
tstVDShareable_TEMPLATE = VBOXR3TSTEXE
tstVDShareable_LIBS = $(LIB_DDU)
tstVDShareable_SOURCES = tstVDShareable.cpp
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 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-img_SOURCES = \
vbox-img.cpp \
../VD.cpp \
../VDVfs.cpp \
../VDI.cpp \
../VMDK.cpp \
../VHD.cpp \
../DMG.cpp \
../Parallels.cpp \
../ISCSI.cpp \
../RAW.cpp \
../QED.cpp \
../QCOW.cpp \
../VHDX.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 += \
$(PATH_STAGE_LIB)/VBox-liblzf-static$(VBOX_SUFF_LIB) \
$(PATH_STAGE_LIB)/VBox-zlib-static$(VBOX_SUFF_LIB)
else
vbox-img_LIBS += \
$(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB) \
$(SDK_VBOX_ZLIB_LIBS)
endif
ifeq ($(KBUILD_TARGET),linux)
vbox-img_LIBS += crypt
ifdef SDK_VBOX_LIBXML2_LIBS
vbox-img_LIBS += xml2
endif
else if1of ($(KBUILD_TARGET),darwin freebsd)
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
include $(FILE_KBUILD_SUB_FOOTER)