VirtualBox

source: vbox/trunk/src/VBox/Main/testcase/Makefile.kmk@ 105016

Last change on this file since 105016 was 105006, checked in by vboxsync, 5 months ago

Video Recording: Big revamp to improve overall performance. We now don't rely on the periodic display refresh callback anymore to render the entire framebuffer but now rely on delta updates ("dirty rectangles"). Also, we now only encode new frames when an area has changed. This also needed cursor position + change change notifications, as we render the cursor on the host side if mouse integration is enabled (requires 7.1 Guest Additions as of now). Optimized the BGRA32->YUV IV420 color space conversion as well as the overall amount of pixel data shuffled forth and back. Added a new testcase for the cropping/centering code. bugref:10650

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.2 KB
Line 
1# $Id: Makefile.kmk 105006 2024-06-24 17:43:00Z vboxsync $
2## @file
3# Sub-Makefile for the VBox API testcases.
4#
5
6#
7# Copyright (C) 2004-2023 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
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#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31
32#
33# Target and globals (small mess)
34#
35ifndef VBOX_ONLY_SDK
36 if defined(VBOX_WITH_TESTCASES)
37 PROGRAMS += \
38 tstAPI \
39 tstVBoxAPI \
40 tstVBoxAPIPerf \
41 tstVBoxMultipleVM \
42 $(if $(VBOX_OSE),,tstOVF) \
43 $(if $(VBOX_WITH_XPCOM),tstVBoxAPIXPCOM,tstVBoxAPIWin msiDarwinDescriptorDecoder) \
44 $(if $(VBOX_WITH_RESOURCE_USAGE_API),tstCollector,) \
45 $(if $(VBOX_WITH_GUEST_CONTROL),tstGuestCtrlContextID,) \
46 $(if $(VBOX_WITH_GUEST_CONTROL),tstGuestCtrlParseBuffer,) \
47 $(if $(VBOX_WITH_GUEST_CONTROL),tstGuestCtrlPaths,) \
48 tstMediumLock \
49 tstSafeArray \
50 tstRecording \
51 tstSettings \
52 tstBstr \
53 tstGuid \
54 tstUnattendedScript \
55 tstVBoxCrypto
56 PROGRAMS.linux += \
57 $(if $(VBOX_WITH_USB),tstUSBProxyLinux,)
58 endif # !VBOX_WITH_TESTCASES
59endif # !VBOX_ONLY_SDK
60if defined(VBOX_ONLY_SDK) || !defined(VBOX_WITH_XPCOM)
61 INSTALLS += samplesMSCOM
62endif
63if defined(VBOX_ONLY_SDK) || defined(VBOX_WITH_XPCOM)
64 INSTALLS += samplesXPCOM
65endif
66
67
68#
69# The samples
70#
71samplesMSCOM_MODE = a+r,u+w
72samplesMSCOM_INST = $(INST_SDK)bindings/mscom/samples/
73samplesMSCOM_SOURCES = tstVBoxAPIWin.cpp makefile.tstVBoxAPIWin=>Makefile
74
75samplesXPCOM_MODE = a+r,u+w
76samplesXPCOM_INST = $(INST_SDK)bindings/xpcom/samples/
77samplesXPCOM_SOURCES = tstVBoxAPIXPCOM.cpp makefile.tstVBoxAPIXPCOM=>Makefile
78
79#
80# tstVBoxMultipleVM
81#
82tstVBoxMultipleVM_TEMPLATE = VBoxMainClientTstExe
83tstVBoxMultipleVM_SOURCES = tstVBoxMultipleVM.cpp
84
85#
86# tstAPI
87#
88tstAPI_TEMPLATE = VBoxMainClientTstExe
89#tstAPI_INST = $(INST_SDK)bindings/gluecom/samples/
90tstAPI_SOURCES = tstAPI.cpp
91
92#
93# tstVBoxAPI
94#
95tstVBoxAPI_TEMPLATE = VBoxMainClientTstExe
96tstVBoxAPI_SOURCES = \
97 tstVBoxAPI.cpp
98
99#
100# tstVBoxAPIPerf
101#
102tstVBoxAPIPerf_TEMPLATE = VBoxMainClientTstExe
103tstVBoxAPIPerf_SOURCES = \
104 tstVBoxAPIPerf.cpp
105
106#
107# tstOVF
108#
109tstOVF_TEMPLATE = VBoxMainClientTstExe
110#tstOVF_INST = $(INST_SDK)bindings/gluecom/samples/
111tstOVF_SOURCES = tstOVF.cpp
112
113ifndef VBOX_OSE
114 #
115 # OVF test data.
116 #
117 INSTALLS += ovf-testcases
118 ovf-testcases_MODE = a+r,u+w
119 ovf-testcases_INST = $(INST_TESTCASE)ovf-testcases/
120 ovf-testcases_SOURCES = \
121 ovf-dummy.vmdk \
122 ovf-joomla-0.9/joomla-1.1.4-ovf.ovf=>ovf-joomla-0.9/joomla-1.1.4-ovf.ovf \
123 ovf-winhost-audio-nodisks/WinXP.ovf=>ovf-winhost-audio-nodisks/WinXP.ovf \
124 ovf-winxp-vbox-sharedfolders/winxp.ovf=>ovf-winxp-vbox-sharedfolders/winxp.ovf
125endif
126
127
128#
129# tstVBoxAPIXPCOM
130#
131# We only build the testcase here to make sure it builds.
132# It comes with a custom makefile which should be tested as well!
133#
134# Use very generic template to make the build environment similar
135# to the standalone case, to detect if IPRT or glue use sneaks in.
136#
137tstVBoxAPIXPCOM_TEMPLATE = VBoxR3Exe
138tstVBoxAPIXPCOM_INST = $(INST_TESTCASE)
139tstVBoxAPIXPCOM_SOURCES = tstVBoxAPIXPCOM.cpp
140tstVBoxAPIXPCOM_INCS = \
141 $(VBOX_PATH_SDK)/bindings/xpcom/include \
142 $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
143 $(VBOX_PATH_SDK)/bindings/xpcom/include/string \
144 $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
145 $(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd
146tstVBoxAPIXPCOM_LIBS = \
147 $(LIB_XPCOM) \
148 $(LIB_RUNTIME)
149tstVBoxAPIXPCOM_CXXFLAGS = -fshort-wchar
150ifdef VBOX_WITH_RUNPATH
151 tstVBoxAPIXPCOM_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' $(TEMPLATE_VBoxBldProg_LDFLAGS)
152else ifdef VBOX_WITH_RELATIVE_RUNPATH
153 tstVBoxAPIXPCOM_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/..' $(TEMPLATE_VBoxBldProg_LDFLAGS)
154endif
155tstVBoxAPIXPCOM_INTERMEDIATES = \
156 $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
157ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
158 tstVBoxAPIXPCOM_DEFS += VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
159endif
160
161
162#
163# tstVBoxAPIWin
164#
165# Use very generic template to make the build environment similar
166# to the standalone case, to detect if IPRT or glue use sneaks in.
167#
168tstVBoxAPIWin_TEMPLATE = VBoxR3Exe
169tstVBoxAPIWin_INST = $(INST_TESTCASE)
170tstVBoxAPIWin_SOURCES = \
171 tstVBoxAPIWin.cpp \
172 $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox_i.c
173tstVBoxAPIWin_INCS = \
174 $(VBOX_PATH_SDK)/bindings/mscom/include
175tstVBoxAPIWin_INTERMEDIATES = \
176 $(VBOX_PATH_SDK)/bindings/mscom/include/VirtualBox.h
177
178
179#
180# msiDarwinDescriptorDecoder
181#
182# Use very generic template to make the build environment similar
183# to the standalone case, to detect if IPRT or glue use sneaks in.
184#
185msiDarwinDescriptorDecoder_TEMPLATE = VBoxR3Exe
186msiDarwinDescriptorDecoder_INST = $(VBOX_INST_TOOLS)
187msiDarwinDescriptorDecoder_SOURCES = \
188 msiDarwinDescriptorDecoder.cpp
189
190
191#
192# tstCollector
193#
194# Note! VBOX_MAIN_APIWRAPPER_GEN_HDRS is only defined if kmk is executed a
195# parent directory. Since the rules for generating the files listed by
196# the variable lives in the parent makefile, this is not a problem.
197#
198tstCollector_TEMPLATE = VBoxMainClientTstExe
199tstCollector_SOURCES = \
200 tstCollector.cpp \
201 ../src-server/Performance.cpp
202tstCollector_INCS = \
203 ../include \
204 $(VBOX_MAIN_APIWRAPPER_INCS)
205tstCollector_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
206tstCollector_DEFS = VBOX_COLLECTOR_TEST_CASE
207tstCollector_LDFLAGS.darwin = -lproc
208tstCollector_LDFLAGS.solaris = -lkstat -lnvpair
209tstCollector_LDFLAGS.win = psapi.lib powrprof.lib
210
211
212#
213# tstGuestCtrlContextID
214#
215tstGuestCtrlContextID_TEMPLATE = VBoxMainClientTstExe
216tstGuestCtrlContextID_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
217tstGuestCtrlContextID_DEFS += VBOX_WITH_HGCM VBOX_WITH_GUEST_CONTROL VBOX_GUESTCTRL_TEST_CASE
218tstGuestCtrlContextID_SOURCES = \
219 tstGuestCtrlContextID.cpp \
220 ../src-client/GuestCtrlPrivate.cpp
221tstGuestCtrlContextID_INCS = ../include \
222 $(VBOX_MAIN_APIWRAPPER_INCS)
223
224
225#
226# tstGuestCtrlParseBuffer
227#
228tstGuestCtrlParseBuffer_TEMPLATE = VBoxMainClientTstExe
229tstGuestCtrlParseBuffer_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
230tstGuestCtrlParseBuffer_DEFS += VBOX_WITH_HGCM VBOX_WITH_GSTCTL_TOOLBOX_SUPPORT VBOX_WITH_GUEST_CONTROL VBOX_GUESTCTRL_TEST_CASE
231tstGuestCtrlParseBuffer_SOURCES = \
232 tstGuestCtrlParseBuffer.cpp \
233 ../src-client/GuestCtrlPrivate.cpp
234tstGuestCtrlParseBuffer_INCS = ../include \
235 $(VBOX_MAIN_APIWRAPPER_INCS)
236
237
238#
239# tstGuestCtrlPaths
240#
241tstGuestCtrlPaths_TEMPLATE = VBoxMainClientTstExe
242tstGuestCtrlPaths_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
243tstGuestCtrlPaths_DEFS += VBOX_WITH_HGCM VBOX_WITH_GUEST_CONTROL VBOX_GUESTCTRL_TEST_CASE
244tstGuestCtrlPaths_SOURCES = \
245 tstGuestCtrlPaths.cpp \
246 ../src-client/GuestCtrlPrivate.cpp
247tstGuestCtrlPaths_INCS = ../include \
248 $(VBOX_MAIN_APIWRAPPER_INCS)
249
250if 0 # Enable this if you want automatic runs after compilation.
251 $$(tstGuestCtrlPaths_0_OUTDIR)/tstGuestCtrlPaths.run: $$(tstGuestCtrlPaths_1_STAGE_TARGET)
252 export VBOX_LOG_DEST=nofile; $(tstGuestCtrlPaths_1_STAGE_TARGET) quiet
253 $(QUIET)$(APPEND) -t "$@" "done"
254 OTHERS += $(tstGuestCtrlPaths_0_OUTDIR)/tstGuestCtrlPaths.run
255endif
256
257
258#
259# tstUSBProxyLinux
260#
261tstUSBProxyLinux_TEMPLATE = VBoxMainClientTstExe
262tstUSBProxyLinux_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
263tstUSBProxyLinux_SOURCES = \
264 tstUSBProxyLinux.cpp \
265 ../src-server/linux/USBGetDevices.cpp
266tstUSBProxyLinux_INCS = \
267 . \
268 ../include \
269 $(VBOX_PATH_SDK)/bindings/xpcom/include \
270 $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
271 $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
272 $(VBOX_MAIN_APIWRAPPER_INCS)
273tstUSBProxyLinux_DEFS = \
274 UNIT_TEST \
275 VBOX_WITH_USB \
276 VBOX_USB_WITH_SYSFS \
277 VBOX_WITH_XPCOM
278tstUSBProxyLinux_DEPS = \
279 $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
280tstUSBProxyLinux_LIBS += \
281 $(PATH_OUT)/lib/USBLib.a \
282 $(PATH_OUT)/lib/VBoxCOM.a
283
284
285#
286# tstMediumLock
287#
288tstMediumLock_TEMPLATE = VBoxMainClientTstExe
289tstMediumLock_SOURCES = tstMediumLock.cpp
290
291
292#
293# tstSafeArray
294#
295tstSafeArray_TEMPLATE = VBoxMainClientTstExe
296tstSafeArray_SOURCES = tstSafeArray.cpp
297
298
299#
300# tstRecording
301#
302tstRecording_TEMPLATE = VBoxMainClientTstExe
303tstRecording_SOURCES = \
304 tstRecording.cpp \
305 ../src-client/RecordingUtils.cpp
306tstRecording_INCS = \
307 ../include
308
309
310#
311# tstSettings
312#
313tstSettings_TEMPLATE = VBoxMainClientTstExe
314tstSettings_INCS = \
315 ../include \
316 $(VBOX_MAIN_APIWRAPPER_INCS) \
317 $(dir $(VBOX_XML_SCHEMADEFS_H))
318tstSettings_SOURCES = \
319 tstSettings.cpp \
320 ../src-all/HashedPw.cpp \
321 ../xml/Settings.cpp
322
323#
324# tstBstr
325#
326tstBstr_TEMPLATE = VBoxMainClientTstExe
327tstBstr_SOURCES = tstBstr.cpp
328
329
330#
331# tstGuid
332#
333tstGuid_TEMPLATE = VBoxMainClientTstExe
334tstGuid_SOURCES = tstGuid.cpp
335
336
337#
338# tstUnattendedScript
339#
340tstUnattendedScript_TEMPLATE = VBoxMainClientTstExe
341tstUnattendedScript_DEFS = VBOX_WITH_UNATTENDED IN_VBOXSVC IN_TST_UNATTENDED_SCRIPT
342tstUnattendedScript_INTERMEDIATES = \
343 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS) \
344 $(VBOX_XML_SCHEMADEFS_H)
345tstUnattendedScript_INCS = \
346 ../include \
347 $(VBOX_MAIN_APIWRAPPER_INCS) \
348 $(dir $(VBOX_XML_SCHEMADEFS_H))
349tstUnattendedScript_SOURCES = \
350 tstUnattendedScript.cpp \
351 ../src-server/UnattendedScript.cpp \
352 ../src-all/TextScript.cpp \
353 ../src-all/VirtualBoxBase.cpp \
354 ../src-all/VirtualBoxErrorInfoImpl.cpp \
355 ../src-all/AutoCaller.cpp \
356 ../src-all/GlobalStatusConversion.cpp
357tstUnattendedScript_LIBS = \
358 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB)
359
360INSTALLS += tstUnattendedScriptFiles
361tstUnattendedScriptFiles_TEMPLATE = VBoxMainTstExe
362tstUnattendedScriptFiles_SOURCES = \
363 tstUnattendedScript-1.template \
364 tstUnattendedScript-1.expected
365
366
367#
368# tstVBoxCrypto
369#
370tstVBoxCrypto_TEMPLATE = VBoxMainClientTstExe
371tstVBoxCrypto_SOURCES = tstVBoxCrypto.cpp
372
373
374
375# generate rules.
376include $(FILE_KBUILD_SUB_FOOTER)
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette