diff options
Diffstat (limited to 'src/VBox/Main/testcase/Makefile.kmk')
-rw-r--r-- | src/VBox/Main/testcase/Makefile.kmk | 343 |
1 files changed, 343 insertions, 0 deletions
diff --git a/src/VBox/Main/testcase/Makefile.kmk b/src/VBox/Main/testcase/Makefile.kmk new file mode 100644 index 00000000..d2fb9a72 --- /dev/null +++ b/src/VBox/Main/testcase/Makefile.kmk @@ -0,0 +1,343 @@ +# $Id: Makefile.kmk $ +## @file +# Sub-Makefile for the VBox API testcases. +# + +# +# Copyright (C) 2004-2022 Oracle and/or its affiliates. +# +# This file is part of VirtualBox base platform packages, as +# available from https://www.virtualbox.org. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, in version 3 of the +# License. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses>. +# +# SPDX-License-Identifier: GPL-3.0-only +# + +SUB_DEPTH = ../../../.. +include $(KBUILD_PATH)/subheader.kmk + + +# +# Target and globals (small mess) +# +ifndef VBOX_ONLY_SDK + if defined(VBOX_WITH_TESTCASES) + PROGRAMS += \ + tstAPI \ + tstVBoxAPI \ + tstVBoxAPIPerf \ + tstVBoxMultipleVM \ + $(if $(VBOX_OSE),,tstOVF) \ + $(if $(VBOX_WITH_XPCOM),tstVBoxAPIXPCOM,tstVBoxAPIWin msiDarwinDescriptorDecoder) \ + $(if $(VBOX_WITH_RESOURCE_USAGE_API),tstCollector,) \ + $(if $(VBOX_WITH_GUEST_CONTROL),tstGuestCtrlContextID,) \ + $(if $(VBOX_WITH_GUEST_CONTROL),tstGuestCtrlParseBuffer,) \ + $(if $(VBOX_WITH_GUEST_CONTROL),tstGuestCtrlPaths,) \ + tstMediumLock \ + tstBstr \ + tstGuid \ + tstUnattendedScript \ + tstVBoxCrypto + PROGRAMS.linux += \ + $(if $(VBOX_WITH_USB),tstUSBProxyLinux,) + endif # !VBOX_WITH_TESTCASES +endif # !VBOX_ONLY_SDK +if defined(VBOX_ONLY_SDK) || !defined(VBOX_WITH_XPCOM) + INSTALLS += samplesMSCOM +endif +if defined(VBOX_ONLY_SDK) || defined(VBOX_WITH_XPCOM) + INSTALLS += samplesXPCOM +endif + + +# +# The samples +# +samplesMSCOM_MODE = a+r,u+w +samplesMSCOM_INST = $(INST_SDK)bindings/mscom/samples/ +samplesMSCOM_SOURCES = tstVBoxAPIWin.cpp makefile.tstVBoxAPIWin=>Makefile + +samplesXPCOM_MODE = a+r,u+w +samplesXPCOM_INST = $(INST_SDK)bindings/xpcom/samples/ +samplesXPCOM_SOURCES = tstVBoxAPIXPCOM.cpp makefile.tstVBoxAPIXPCOM=>Makefile + +# +# tstVBoxMultipleVM +# +tstVBoxMultipleVM_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstVBoxMultipleVM_SOURCES = tstVBoxMultipleVM.cpp + +# +# tstAPI +# +tstAPI_TEMPLATE = VBOXMAINCLIENTTSTEXE +#tstAPI_INST = $(INST_SDK)bindings/gluecom/samples/ +tstAPI_SOURCES = tstAPI.cpp + +# +# tstVBoxAPI +# +tstVBoxAPI_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstVBoxAPI_SOURCES = \ + tstVBoxAPI.cpp + +# +# tstVBoxAPIPerf +# +tstVBoxAPIPerf_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstVBoxAPIPerf_SOURCES = \ + tstVBoxAPIPerf.cpp + +# +# tstOVF +# +tstOVF_TEMPLATE = VBOXMAINCLIENTTSTEXE +#tstOVF_INST = $(INST_SDK)bindings/gluecom/samples/ +tstOVF_SOURCES = tstOVF.cpp + +ifndef VBOX_OSE +# +# OVF test data. +# +INSTALLS += ovf-testcases +ovf-testcases_MODE = a+r,u+w +ovf-testcases_INST = $(INST_TESTCASE)ovf-testcases/ +ovf-testcases_SOURCES = \ + ovf-dummy.vmdk \ + ovf-joomla-0.9/joomla-1.1.4-ovf.ovf=>ovf-joomla-0.9/joomla-1.1.4-ovf.ovf \ + ovf-winhost-audio-nodisks/WinXP.ovf=>ovf-winhost-audio-nodisks/WinXP.ovf \ + ovf-winxp-vbox-sharedfolders/winxp.ovf=>ovf-winxp-vbox-sharedfolders/winxp.ovf +endif + + +# +# tstVBoxAPIXPCOM +# +# We only build the testcase here to make sure it builds. +# It comes with a custom makefile which should be tested as well! +# +# Use very generic template to make the build environment similar +# to the standalone case, to detect if IPRT or glue use sneaks in. +# +tstVBoxAPIXPCOM_TEMPLATE = VBOXR3EXE +tstVBoxAPIXPCOM_INST = $(INST_TESTCASE) +tstVBoxAPIXPCOM_SOURCES = tstVBoxAPIXPCOM.cpp +tstVBoxAPIXPCOM_INCS = \ + $(VBOX_PATH_SDK)/bindings/xpcom/include \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/string \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd +tstVBoxAPIXPCOM_LIBS = \ + $(LIB_XPCOM) \ + $(LIB_RUNTIME) +tstVBoxAPIXPCOM_CXXFLAGS = -fshort-wchar +ifdef VBOX_WITH_RUNPATH + tstVBoxAPIXPCOM_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' $(TEMPLATE_VBoxBldProg_LDFLAGS) +else ifdef VBOX_WITH_RELATIVE_RUNPATH + tstVBoxAPIXPCOM_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/..' $(TEMPLATE_VBoxBldProg_LDFLAGS) +endif +tstVBoxAPIXPCOM_INTERMEDIATES = \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h +ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP + tstVBoxAPIXPCOM_DEFS += VBOX_WITH_XPCOM_NAMESPACE_CLEANUP +endif + + +# +# tstVBoxAPIWin +# +# Use very generic template to make the build environment similar +# to the standalone case, to detect if IPRT or glue use sneaks in. +# +tstVBoxAPIWin_TEMPLATE = VBOXR3EXE +tstVBoxAPIWin_INST = $(INST_TESTCASE) +tstVBoxAPIWin_SOURCES = \ + tstVBoxAPIWin.cpp \ + $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox_i.c +tstVBoxAPIWin_INCS = \ + $(VBOX_PATH_SDK)/bindings/mscom/include +tstVBoxAPIWin_INTERMEDIATES = \ + $(VBOX_PATH_SDK)/bindings/mscom/include/VirtualBox.h + + +# +# msiDarwinDescriptorDecoder +# +# Use very generic template to make the build environment similar +# to the standalone case, to detect if IPRT or glue use sneaks in. +# +msiDarwinDescriptorDecoder_TEMPLATE = VBOXR3EXE +msiDarwinDescriptorDecoder_INST = $(VBOX_INST_TOOLS) +msiDarwinDescriptorDecoder_SOURCES = \ + msiDarwinDescriptorDecoder.cpp + + +# +# tstCollector +# +# Note! VBOX_MAIN_APIWRAPPER_GEN_HDRS is only defined if kmk is executed a +# parent directory. Since the rules for generating the files listed by +# the variable lives in the parent makefile, this is not a problem. +# +tstCollector_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstCollector_SOURCES = \ + tstCollector.cpp \ + ../src-server/Performance.cpp +tstCollector_INCS = \ + ../include \ + $(VBOX_MAIN_APIWRAPPER_INCS) +tstCollector_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) +tstCollector_DEFS = VBOX_COLLECTOR_TEST_CASE +tstCollector_LDFLAGS.darwin = -lproc +tstCollector_LDFLAGS.solaris = -lkstat -lnvpair +tstCollector_LDFLAGS.win = psapi.lib powrprof.lib + + +# +# tstGuestCtrlContextID +# +tstGuestCtrlContextID_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstGuestCtrlContextID_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) +tstGuestCtrlContextID_DEFS += VBOX_WITH_HGCM VBOX_WITH_GUEST_CONTROL VBOX_GUESTCTRL_TEST_CASE +tstGuestCtrlContextID_SOURCES = \ + tstGuestCtrlContextID.cpp \ + ../src-client/GuestCtrlPrivate.cpp +tstGuestCtrlContextID_INCS = ../include \ + $(VBOX_MAIN_APIWRAPPER_INCS) + + +# +# tstGuestCtrlParseBuffer +# +tstGuestCtrlParseBuffer_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstGuestCtrlParseBuffer_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) +tstGuestCtrlParseBuffer_DEFS += VBOX_WITH_HGCM VBOX_WITH_GUEST_CONTROL VBOX_GUESTCTRL_TEST_CASE +tstGuestCtrlParseBuffer_SOURCES = \ + tstGuestCtrlParseBuffer.cpp \ + ../src-client/GuestCtrlPrivate.cpp +tstGuestCtrlParseBuffer_INCS = ../include \ + $(VBOX_MAIN_APIWRAPPER_INCS) + + +# +# tstGuestCtrlPaths +# +tstGuestCtrlPaths_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstGuestCtrlPaths_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) +tstGuestCtrlPaths_DEFS += VBOX_WITH_HGCM VBOX_WITH_GUEST_CONTROL VBOX_GUESTCTRL_TEST_CASE +tstGuestCtrlPaths_SOURCES = \ + tstGuestCtrlPaths.cpp \ + ../src-client/GuestCtrlPrivate.cpp +tstGuestCtrlPaths_INCS = ../include \ + $(VBOX_MAIN_APIWRAPPER_INCS) + +if 0 # Enable this if you want automatic runs after compilation. + $$(tstGuestCtrlPaths_0_OUTDIR)/tstGuestCtrlPaths.run: $$(tstGuestCtrlPaths_1_STAGE_TARGET) + export VBOX_LOG_DEST=nofile; $(tstGuestCtrlPaths_1_STAGE_TARGET) quiet + $(QUIET)$(APPEND) -t "$@" "done" + OTHERS += $(tstGuestCtrlPaths_0_OUTDIR)/tstGuestCtrlPaths.run +endif + + +# +# tstUSBProxyLinux +# +tstUSBProxyLinux_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstUSBProxyLinux_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) +tstUSBProxyLinux_SOURCES = \ + tstUSBProxyLinux.cpp \ + ../src-server/linux/USBGetDevices.cpp +tstUSBProxyLinux_INCS = \ + . \ + ../include \ + $(VBOX_PATH_SDK)/bindings/xpcom/include \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \ + $(VBOX_MAIN_APIWRAPPER_INCS) +tstUSBProxyLinux_DEFS = \ + UNIT_TEST \ + VBOX_WITH_USB \ + VBOX_USB_WITH_SYSFS \ + VBOX_WITH_XPCOM +tstUSBProxyLinux_DEPS = \ + $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h +tstUSBProxyLinux_LIBS += \ + $(PATH_OUT)/lib/USBLib.a \ + $(PATH_OUT)/lib/VBoxCOM.a + + +# +# tstMediumLock +# +tstMediumLock_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstMediumLock_SOURCES = tstMediumLock.cpp + + +# +# tstBstr +# +tstBstr_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstBstr_SOURCES = tstBstr.cpp + + +# +# tstGuid +# +tstGuid_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstGuid_SOURCES = tstGuid.cpp + + +# +# tstUnattendedScript +# +tstUnattendedScript_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstUnattendedScript_DEFS = VBOX_WITH_UNATTENDED IN_VBOXSVC IN_TST_UNATTENDED_SCRIPT +tstUnattendedScript_INTERMEDIATES = \ + $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) \ + $(VBOX_XML_SCHEMADEFS_H) +tstUnattendedScript_INCS = \ + ../include \ + $(VBOX_MAIN_APIWRAPPER_INCS) \ + $(dir $(VBOX_XML_SCHEMADEFS_H)) +tstUnattendedScript_SOURCES = \ + tstUnattendedScript.cpp \ + ../src-server/UnattendedScript.cpp \ + ../src-all/TextScript.cpp \ + ../src-all/VirtualBoxBase.cpp \ + ../src-all/VirtualBoxErrorInfoImpl.cpp \ + ../src-all/AutoCaller.cpp \ + ../src-all/GlobalStatusConversion.cpp +tstUnattendedScript_LIBS = \ + $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) + +INSTALLS += tstUnattendedScriptFiles +tstUnattendedScriptFiles_TEMPLATE = VBOXMAINTSTEXE +tstUnattendedScriptFiles_SOURCES = \ + tstUnattendedScript-1.template \ + tstUnattendedScript-1.expected + + +# +# tstVBoxCrypto +# +tstVBoxCrypto_TEMPLATE = VBOXMAINCLIENTTSTEXE +tstVBoxCrypto_SOURCES = tstVBoxCrypto.cpp + + + +# generate rules. +include $(FILE_KBUILD_SUB_FOOTER) + |