VirtualBox

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

Last change on this file since 96191 was 96175, checked in by vboxsync, 3 years ago

Recording: Implemented support for Vorbis codec (provided by libvorbis, not enabled by default yet). This also makes all the codec handling more abstract by using a simple codec wrapper, to keep other places free from codec-specific as much as possible. Initial implementation works and output files are being recognized by media players, but there still are some timing bugs to resolve, as well as optimizing the performance. bugref:10275

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 68.6 KB
Line 
1# $Id: Makefile.kmk 96175 2022-08-12 14:01:17Z vboxsync $
2## @file
3# Makefile for the VBox Main module.
4#
5
6#
7# Copyright (C) 2004-2022 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18SUB_DEPTH = ../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21#
22# Make sure our Config.kmk is included.
23#
24ifndef VBOX_MAIN_CONFIG_KMK_INCLUDED
25 include $(PATH_SUB_CURRENT)/Config.kmk
26endif
27
28#
29# Include sub-makefile(s).
30#
31ifndef VBOX_ONLY_EXTPACKS
32 ifdef VBOX_WITH_WEBSERVICES
33 include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
34 endif
35 include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
36 include $(PATH_SUB_CURRENT)/cbinding/Makefile.kmk
37 include $(PATH_SUB_CURRENT)/UnattendedTemplates/Makefile.kmk
38 ifndef VBOX_ONLY_SDK
39 include $(PATH_SUB_CURRENT)/src-helper-apps/OpenGLTest/Makefile.kmk
40 endif
41 if defined(VBOX_WITH_OPEN_WATCOM) && defined(VBOX_WITH_UNATTENDED)
42 include $(PATH_SUB_CURRENT)/src-helper-apps/os2/Makefile.kmk
43 endif
44endif
45
46
47#
48# Targets and globals (bit of a mess...)
49#
50VBOX_PATH_MAIN_SRC := $(PATH_SUB_CURRENT)
51
52ifdef VBOX_ONLY_SDK
53 # HACK ALERT! VBoxCOM is skipped, but its output dir is referenced a lot. So, define it.
54 VBoxCOM_0_OUTDIR := $(call TARGET_PATH,VBoxCOM)
55 BLDDIRS += $(VBoxCOM_0_OUTDIR) $(PATH_STAGE_BIN)/components
56 ifndef TOOL_$(VBOX_VCC_TOOL)
57 include $(KBUILD_PATH)/tools/$(VBOX_VCC_TOOL).kmk # For the idl /cpp statement.
58 endif
59 ifndef SDK_$(VBOX_WINPSDK)
60 include $(KBUILD_PATH)/sdks/$(VBOX_WINPSDK).kmk
61 endif
62endif # !VBOX_ONLY_SDK
63
64
65## VBOX_MAIN_DEFS is used by VBoxC, VBoxClient-x86, VBoxSVC and VBoxSVCM, making
66# sure they all have the same set of features enabled.
67VBOX_MAIN_DEFS :=
68ifneq ($(KBUILD_TARGET),win)
69 ifndef VBOX_WITH_XPCOM
70$(error "VBox: VBOX_WITH_XPCOM isn't defined")
71 endif
72VBOX_MAIN_DEFS += VBOX_WITH_GENERIC_SESSION_WATCHER
73endif
74ifdef VBOX_WITH_AUDIO_ALSA
75VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_ALSA
76endif
77ifdef VBOX_WITH_AUDIO_DEBUG
78VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_DEBUG
79endif
80ifdef VBOX_WITH_AUDIO_OSS
81VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_OSS
82endif
83ifdef VBOX_WITH_AUDIO_PULSE
84VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_PULSE
85endif
86ifdef VBOX_WITH_AUDIO_RECORDING
87VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_RECORDING
88endif
89ifdef VBOX_WITH_AUDIO_VALIDATIONKIT
90VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_VALIDATIONKIT
91endif
92ifdef VBOX_WITH_AUDIO_VRDE
93VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_VRDE
94endif
95ifdef VBOX_WITH_COPYTOGUEST
96VBOX_MAIN_DEFS += VBOX_WITH_COPYTOGUEST
97endif
98ifdef VBOX_WITH_E1000
99VBOX_MAIN_DEFS += VBOX_WITH_E1000
100endif
101ifdef VBOX_WITH_EXTPACK
102VBOX_MAIN_DEFS += VBOX_WITH_EXTPACK
103endif
104ifdef VBOX_WITH_GUEST_CONTROL
105VBOX_MAIN_DEFS += VBOX_WITH_GUEST_CONTROL
106endif
107ifdef VBOX_WITH_GUEST_PROPS
108VBOX_MAIN_DEFS += VBOX_WITH_GUEST_PROPS
109 ifdef VBOX_WITH_GUEST_PROPS_RDONLY_GUEST
110VBOX_MAIN_DEFS += VBOX_WITH_GUEST_PROPS_RDONLY_GUEST
111 endif
112endif
113ifdef VBOX_WITH_HGCM
114VBOX_MAIN_DEFS += VBOX_WITH_HGCM
115endif
116ifdef VBOX_WITH_HOSTNETIF_API
117VBOX_MAIN_DEFS += VBOX_WITH_HOSTNETIF_API
118endif
119ifdef VBOX_WITH_DHCPD
120VBOX_MAIN_DEFS += VBOX_WITH_DHCPD
121endif
122ifdef VBOX_WITH_LIVE_MIGRATION
123VBOX_MAIN_DEFS += VBOX_WITH_LIVE_MIGRATION
124endif
125ifdef VBOX_WITH_MIDL_PROXY_STUB
126VBOX_MAIN_DEFS += VBOX_WITH_MIDL_PROXY_STUB
127endif
128ifdef VBOX_WITH_NETFLT
129VBOX_MAIN_DEFS += VBOX_WITH_NETFLT
130endif
131if defined(VBOX_WITH_VMNET) && "$(KBUILD_TARGET)" == "darwin"
132VBOX_MAIN_DEFS += VBOX_WITH_VMNET
133endif
134ifdef VBOX_WITH_CLOUD_NET
135VBOX_MAIN_DEFS += VBOX_WITH_CLOUD_NET
136endif
137ifdef VBOX_WITH_PCI_PASSTHROUGH
138VBOX_MAIN_DEFS += VBOX_WITH_PCI_PASSTHROUGH
139endif
140ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
141VBOX_MAIN_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
142endif
143ifdef VBOX_WITH_RECORDING
144VBOX_MAIN_DEFS += VBOX_WITH_RECORDING
145endif
146ifdef VBOX_WITH_SDS
147VBOX_MAIN_DEFS += VBOX_WITH_SDS
148endif
149ifdef VBOX_WITH_SHARED_CLIPBOARD
150VBOX_MAIN_DEFS += VBOX_WITH_SHARED_CLIPBOARD
151 ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
152 VBOX_MAIN_DEFS += VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
153 endif
154endif
155if defined(VBOX_WITH_LIBCURL) && defined(VBOX_WITH_UPDATE_AGENT)
156VBOX_MAIN_DEFS += VBOX_WITH_UPDATE_AGENT
157endif
158ifdef VBOX_WITH_USB_CARDREADER
159VBOX_MAIN_DEFS += VBOX_WITH_USB_CARDREADER
160endif
161ifdef VBOX_WITH_USB_CARDREADER_TEST
162VBOX_MAIN_DEFS += VBOX_WITH_USB_CARDREADER_TEST
163endif
164ifdef VBOX_WITH_VIRTIO
165VBOX_MAIN_DEFS += VBOX_WITH_VIRTIO
166endif
167ifdef VBOX_WITH_VIRTIO_1_0
168VBOX_MAIN_DEFS += VBOX_WITH_VIRTIO_1_0
169endif
170ifdef VBOX_WITH_VIRTIO_NET_1_0
171VBOX_MAIN_DEFS += VBOX_WITH_VIRTIO_NET_1_0
172endif
173ifdef VBOX_WITH_VMSVGA
174VBOX_MAIN_DEFS += VBOX_WITH_VMSVGA
175endif
176ifdef VBOX_WITH_VMSVGA3D
177VBOX_MAIN_DEFS += VBOX_WITH_VMSVGA3D
178endif
179ifdef VBOX_WITH_VUSB
180VBOX_MAIN_DEFS += VBOX_WITH_VUSB
181endif
182ifdef VBOX_WITH_EHCI
183 ifdef VBOX_WITH_USB
184 VBOX_MAIN_DEFS += VBOX_WITH_EHCI
185 endif
186endif
187ifdef VBOX_WITH_EFI_IN_DD2
188 VBOX_MAIN_DEFS += VBOX_WITH_EFI_IN_DD2
189endif
190ifdef VBOX_WITH_MAIN_NLS
191 VBOX_MAIN_DEFS += VBOX_WITH_MAIN_NLS
192endif
193# Unconditionally enable the new semaphore key generation code
194VBOX_MAIN_DEFS += VBOX_WITH_NEW_SYS_V_KEYGEN
195
196
197VBOX_IDL_FILE.MSCOM = $(VBOX_PATH_SDK)/bindings/mscom/idl/VirtualBox.idl
198VBOX_IDL_FILE.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/idl/VirtualBox_XPCOM.idl
199
200VBOX_IDL_TYPELIB.XPCOM = $(PATH_STAGE_BIN)/components/VirtualBox_XPCOM.xpt
201VBOX_IDL_HEADER.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
202
203# The MS COM specific stuff.
204if defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" == "win"
205 OTHERS += \
206 $(VBOX_IDL_FILE.MSCOM)
207 OTHER_CLEAN += \
208 $(VBOX_IDL_FILE.MSCOM)
209
210 INSTALLS += VBox-mscom-bindings-include VBox-mscom-bindings-lib
211 VBox-mscom-bindings-include_INST = $(INST_SDK)bindings/mscom/include/
212 VBox-mscom-bindings-include_MODE = a+r,u+w
213 VBox-mscom-bindings-include_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox.h
214 VBox-mscom-bindings-include_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox.h
215 VBox-mscom-bindings-lib_INST = $(INST_SDK)bindings/mscom/lib/
216 VBox-mscom-bindings-lib_MODE = a+r,u+w
217 VBox-mscom-bindings-lib_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
218 $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
219 VBox-mscom-bindings-lib_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
220 $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
221
222 BLDDIRS += $(VBOX_PATH_SDK)/bindings/mscom/idl
223endif
224
225# The XPCOM specific stuff.
226# if defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" != "win" -- does not build on Windows
227if "$(KBUILD_TARGET)" != "win"
228 OTHERS += $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
229 OTHER_CLEAN += \
230 $(VBOX_IDL_FILE.XPCOM) \
231 $(VBOX_IDL_HEADER.XPCOM) \
232 $(VBOX_IDL_TYPELIB.XPCOM)
233
234 INSTALLS += VBox-xpcom-bindings-lib
235 VBox-xpcom-bindings-lib_INST = $(INST_SDK)bindings/xpcom/lib/
236 VBox-xpcom-bindings-lib_MODE = a+r,u+w
237 VBox-xpcom-bindings-lib_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c=>VirtualBox_i.c
238 VBox-xpcom-bindings-lib_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c
239
240 VBOX_MAIN_PREREQS += $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
241 BLDDIRS += \
242 $(VBOX_PATH_SDK)/bindings/xpcom/idl \
243 $(VBOX_PATH_SDK)/bindings/xpcom/include
244 # disable VBoxSDS for XPCOM
245 override VBOX_WITH_SDS =
246endif # xpcom
247
248
249#
250# Strip documentation from source XIDL so that we don't get a full
251# recompile every time a comma in the documentation is changed.
252#
253$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_XIDL_FILE).ts)
254$(VBOX_XIDL_FILE).ts +| $(VBOX_XIDL_FILE): \
255 $(VBOX_XIDL_FILE_SRC) \
256 $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl \
257 | $$(dir $$@)
258 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
259 $(QUIET)$(VBOX_XSLTPROC) -o $(VBOX_XIDL_FILE).ts-tmp $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl $(VBOX_XIDL_FILE_SRC)
260 $(QUIET)$(SED) -e 's/ *$(DOLLAR)//g' -e '/^$(DOLLAR)/d' --output $(VBOX_XIDL_FILE).ts $(VBOX_XIDL_FILE).ts-tmp
261 $(QUIET)$(RM) -- $(VBOX_XIDL_FILE).ts-tmp
262 $(QUIET)$(CP) --changed -fv -- $(VBOX_XIDL_FILE).ts $(VBOX_XIDL_FILE)
263
264OTHER_CLEAN += $(VBOX_XIDL_FILE) $(VBOX_XIDL_FILE).ts
265
266
267#
268# The Main API documentation
269#
270VBOX_MAIN_DOC_DIR = $(VBOX_PATH_SDK)/docs
271BLDDIRS += $(VBOX_MAIN_DOC_DIR)
272
273$(PATH_TARGET)/docs.Main: \
274 $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main \
275 $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl \
276 $(VBOX_XIDL_FILE_SRC) \
277 | $(PATH_TARGET)/ \
278 $(VBOX_MAIN_DOC_DIR)/
279 $(call MSG_TOOL,xsltproc,doxygen input,$<,$@)
280 $(QUIET)$(RM) -f $(wildcard $(VBOX_MAIN_DOC_DIR)/html/*) $(PATH_TARGET)/docs.Main
281 $(QUIET)$(VBOX_XSLTPROC) --path ".:$(PATH_ROOT)/doc/manual" -o $(PATH_TARGET)/VirtualBox.idl $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl $(VBOX_XIDL_FILE_SRC)
282 $(QUIET)$(REDIRECT) -E 'DOCDIR=$(VBOX_MAIN_DOC_DIR)' -E 'PATH_TARGET=$(PATH_TARGET)' \
283 -- doxygen $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main
284 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) ">>>>>>>>>>>>>>>>>>>> Main.err: >>>>>>>>>>>>>>>>>>>>>>>>"
285 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(CAT) "$(PATH_TARGET)/Main.err"
286 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "<<<<<<<<<<<<<<<<<<<< Main.err <<<<<<<<<<<<<<<<<<<<<<<<<"
287 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
288 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> Please fix above doxygen errors/warnings listed in"
289 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> $(PATH_TARGET)/Main.err"
290 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
291 $(APPEND) $(PATH_TARGET)/docs.Main
292# aliases
293docs.main docs.Main: $(PATH_TARGET)/docs.Main
294if !defined(VBOX_ONLY_DOCS) && defined(VBOX_WITH_ALL_DOXYGEN_TARGETS)
295docs: $(PATH_TARGET)/docs.Main
296else
297docs:
298endif
299
300
301ifndef VBOX_ONLY_SDK
302 #
303 # Generate library with API class wrappers from the XIDL file.
304 #
305 LIBRARIES += VBoxAPIWrap
306 VBoxAPIWrap_TEMPLATE = VBoxMainLib
307 ifeq ($(KBUILD_TARGET),win)
308 VBoxAPIWrap_USES = vccprecomp
309 VBoxAPIWrap_PCH_HDR := $(PATH_SUB_CURRENT)/src-all/win/VBoxAPIWrap-precomp_vcc.h
310 else if $(KBUILD_KMK_REVISION) >= 3256 && "$(KBUILD_TARGET)" != "darwin" && !defined(VBOX_WITHOUT_PRECOMPILED_HEADERS)
311 if $(VBOX_GCC_VERSION_CXX) >= 50000 # GCC 4.x runs into trouble compiling the header.
312VBoxAPIWrap_USES = gccprecomp
313VBoxAPIWrap_PCH_HDR := $(PATH_SUB_CURRENT)/src-all/xpcom/VBoxAPIWrap-precomp_gcc.h
314 endif
315 endif
316 VBoxAPIWrap_SOURCES = \
317 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
318 $(if-expr defined(VBOX_ONLY_EXTPACKS) \
319 , $(addprefix $(VBoxAPIWrap_0_OUTDIR)/,$(filter \
320 Cloud%\
321 DataStreamWrap.cpp\
322 %FormValueWrap.cpp\
323 %FormWrap.cpp\
324 StringArrayWrap.cpp\
325 , $(notdir $(VBOX_MAIN_APIWRAPPER_GEN_SRCS)))) \
326 , $(VBOX_MAIN_APIWRAPPER_GEN_SRCS))
327 VBoxAPIWrap_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
328 VBoxAPIWrap_DEFS.win.x86 += _WIN32_WINNT=0x0500
329 VBoxAPIWrap_DEFS.win.amd64 += _WIN32_WINNT=0x0510
330 VBoxAPIWrap_INCS += \
331 include
332 if ("$(KBUILD_TARGET)" == "solaris" && $(VBOX_GCC_VERSION_CXX) >= 70000)
333 # Avoid too long symbol names with Solaris 11.4 "dtrace: failed to link script .../VBoxAPI.d: failed to allocate space for probe"
334 VBoxAPIWrap_CXXFLAGS.solaris += -freorder-blocks-algorithm=simple -fno-reorder-blocks-and-partition -fno-reorder-functions
335 endif
336 VBoxAPIWrap_CLEAN = \
337 $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp) \
338 $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h) \
339 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
340 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
341 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
342 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even \
343 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd
344
345 # Two VBox variables used here and/or in the rules generating wrappers.
346 VBoxAPIWrap_VBOX_XSLT = \
347 $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server.xsl
348
349
350 # This include file (generated at the bottom of this file), defines
351 # VBOX_MAIN_APIWRAPPER_GEN_SRCS and VBOX_MAIN_APIWRAPPER_GEN_HDRS.
352 VBoxAPIWrap_VBOX_KMK_FILE = $(PATH_OUT)/vboxapiwrap.kmk
353 include $(VBoxAPIWrap_VBOX_KMK_FILE)
354 OTHER_CLEAN += $(VBoxAPIWrap_VBOX_KMK_FILE) $(VBoxAPIWrap_VBOX_KMK_FILE).ts
355
356 ifdef VBOX_WITH_32_ON_64_MAIN_API
357 LIBRARIES += VBoxAPIWrap-x86
358 VBoxAPIWrap-x86_TEMPLATE = VBoxMainLib-x86
359 VBoxAPIWrap-x86_EXTENDS = VBoxAPIWrap
360 VBoxAPIWrap-x86_DTRACE_HDR_FLAGS = -32 # ugly, should be fixed in the tool in Config.kmk
361 ifeq ($(KBUILD_TARGET),win) ## @todo fix inheritance (fixed in r3253)
362 VBoxAPIWrap-x86_USES = vccprecomp
363 VBoxAPIWrap-x86_PCH_HDR := $(PATH_SUB_CURRENT)/src-all/win/VBoxAPIWrap-precomp_vcc.h
364 endif
365 endif
366
367endif # !VBOX_ONLY_SDK
368
369#
370# Some SDK bit.
371#
372INSTALLS += VBox-main-xidl
373VBox-main-xidl_INST = $(INST_SDK)bindings/
374VBox-main-xidl_MODE = a+r,u+w
375VBox-main-xidl_SOURCES = $(VBOX_XIDL_FILE_SRC)
376
377if defined(VBOX_WITH_PYTHON) && !defined(VBOX_ONLY_EXTPACKS)
378 INSTALLS += VBox-python-glue
379 VBox-python-glue_INST = $(INST_SDK)installer/vboxapi/
380 VBox-python-glue_MODE = a+r,u+w
381 VBox-python-glue_SOURCES = \
382 glue/vboxapi.py=>__init__.py \
383 $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py
384 VBox-python-glue_CLEAN = \
385 $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py \
386 $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants_err_h_1.txt
387 $(call KB_FN_DO_PASS0_ON_TARGET,VBox-python-glue)
388 $(call KB_FN_AUTO_CMD_DEPS,$(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py)
389 $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py \
390 + $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants_err_h_1.txt: \
391 $(VBOX_PATH_MAIN_SRC)/glue/constants-python.xsl \
392 $(VBOX_PATH_MAIN_SRC)/glue/vbox-err-consts.sed \
393 $(PATH_ROOT)/include/iprt/err.h \
394 $(PATH_ROOT)/include/VBox/err.h \
395 $(VBOX_XIDL_FILE) \
396 | $$(dir $$@)
397 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
398 $(call MSG_TOOL,xsltproc,Python constants,$<,$@)
399 $(SED) -f $(VBOX_PATH_MAIN_SRC)/glue/vbox-err-consts.sed \
400 --output $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants_err_h_1.txt \
401 $(PATH_ROOT)/include/iprt/err.h \
402 $(PATH_ROOT)/include/VBox/err.h
403 $(QUIET)$(VBOX_XSLTPROC) -o $@ \
404 --stringparam "g_sErrHFile" "$(VBox-python-glue_0_OUTDIR)/VirtualBox_constants_err_h_1.txt" \
405 $(VBOX_PATH_MAIN_SRC)/glue/constants-python.xsl $(VBOX_XIDL_FILE)
406endif # VBOX_WITH_PYTHON && !VBOX_ONLY_EXTPACKS
407
408if !defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_EXTPACKS) # Note this goes on for *very* long
409
410#
411# Generate SchemaDefs.h and SchemaDefs.cpp from XML Schema
412# These two files are used by both VBoxC and VBoxSVC.
413#
414BLDDIRS += $(PATH_TARGET)/Main
415
416testschemadefs: $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
417
418
419#
420# Trust anchors and certificates -> .cpp
421#
422VBOX_SVC_CERTS_FILE = $(VBoxSVC_0_OUTDIR)/TrustAnchorsAndCerts.cpp
423VBOX_SVC_CERTS := \
424 UefiMicrosoftKek=MicCorKEKCA2011_2011-06-24.crt \
425 UefiMicrosoftCa=MicCorUEFCA2011_2011-06-27.crt \
426 UefiMicrosoftProPca=MicWinProPCA2011_2011-10-19.crt \
427 UefiOracleDefPk=OrclUefiDefPk2021_2021-09-29.crt
428
429VBOX_SVC_CERT_NAMES := $(foreach cert,$(VBOX_SVC_CERTS),$(firstword $(subst =,$(SPACE) ,$(cert))))
430VBOX_SVC_PATH_CERTIFICATES := $(PATH_SUB_CURRENT)/Certificates
431
432$$(VBOX_SVC_CERTS_FILE): $(MAKEFILE_CURRENT) \
433 $(foreach cert,$(VBOX_SVC_CERTS),$(VBOX_SVC_PATH_CERTIFICATES)/$(lastword $(subst =,$(SPACE) ,$(cert)))) \
434 $(VBOX_BIN2C) \
435 | $$(dir $$@)
436 $(QUIET)$(RM) -f -- $@
437 $(QUIET)$(APPEND) -n "$@" \
438 '' \
439 '#include "TrustAnchorsAndCerts.h"' \
440 ''
441 $(foreach cert,$(VBOX_SVC_CERTS), $(NLTAB)$(VBOX_BIN2C) -ascii --append \
442 "$(firstword $(subst =,$(SP) ,$(cert)))" \
443 "$(VBOX_SVC_PATH_CERTIFICATES)/$(lastword $(subst =,$(SP) ,$(cert)))" \
444 "$@")
445
446OTHER_CLEAN += $(VBOX_SVC_CERTS_FILE)
447
448tst-main-certificates: $(VBOX_SVC_CERTS_FILE)
449
450
451#
452# VBoxSDS executable
453#
454if defined(VBOX_WITH_SDS) && "$(KBUILD_TARGET)" == "win"
455PROGRAMS.win += VBoxSDS
456VBoxSDS_TEMPLATE = VBOXMAINEXE
457VBoxSDS_DEFS += VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x0600
458 ifdef VBOX_WITH_VBOXSDL
459VBoxSDS_DEFS += VBOX_WITH_VBOXSDL
460 endif
461 ifdef VBOX_WITH_HEADLESS
462VBoxSDS_DEFS += VBOX_WITH_HEADLESS
463 endif
464 ifdef VBOX_WITH_QTGUI
465VBoxSDS_DEFS += VBOX_WITH_QTGUI
466 endif
467 ifdef VBOX_WITH_VBOXSVC_SESSION_0
468VBoxSDS_DEFS += VBOX_WITH_VBOXSVC_SESSION_0
469 endif
470VBoxSDS_INCS = \
471 include \
472 $(VBoxSDS_0_OUTDIR) \
473 $(VBoxCOM_0_OUTDIR)
474VBoxSDS_INTERMEDIATES = \
475 $(VBOX_MAIN_PREREQS)
476VBoxSDS_SOURCES = \
477 src-global/win/VBoxSDS.cpp \
478 src-global/win/VirtualBoxSDSImpl.cpp \
479 src-global/win/VBoxSDS.rc \
480 src-all/MachineLaunchVMCommonWorker.cpp
481$(call KB_FN_DO_PASS0_ON_TARGET,VBoxSDS) # Sets VBoxSDS_0_OUTDIR
482
483src-global/win/VBoxSDS.rc_INCS = $(VBoxSDS_0_OUTDIR)
484src-global/win/VBoxSDS.rc_DEPS = $(VBoxSDS_0_OUTDIR)/VBoxSDS-icon.rc #$(VBoxSDS_0_OUTDIR)/VBoxSDS.rgs
485VBoxSDS_CLEAN = $(VBoxSDS_0_OUTDIR)/VBoxSDS-icon.rc #$(VBoxSDS_0_OUTDIR)/VBoxSDS.rgs
486
487$(call KB_FN_AUTO_CMD_DEPS,$(VBoxSDS_0_OUTDIR)/VBoxSDS-icon.rc)
488$(VBoxSDS_0_OUTDIR)/VBoxSDS-icon.rc: $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$@)
489 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
490 $(APPEND) -t $@ '1 ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
491
492# $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSDS_0_OUTDIR)/VBoxSDS.rgs)
493# $(VBoxSDS_0_OUTDIR)/VBoxSDS.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
494# $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
495# $(VBOX_XSLTPROC) \
496# --stringparam Application "VirtualBox System" \
497# --stringparam Module VBoxSDS \
498# -o $@ \
499# $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
500# $(VBOX_XIDL_FILE)
501#
502endif #if defined(VBOX_WITH_SDS) && "$(KBUILD_TARGET)" == "win"
503
504#
505# VBoxSVC executable
506#
507PROGRAMS += VBoxSVC
508VBoxSVC_TEMPLATE = VBOXMAINEXE
509if defined(VBOX_WITH_PRECOMPILED_HEADERS) && "$(KBUILD_TARGET)" == "win"
510 VBoxSVC_USES += vccprecomp
511 VBoxSVC_PCH_HDR := $(PATH_SUB_CURRENT)/src-server/win/precomp_vcc.h
512else if $(KBUILD_KMK_REVISION) >= 3256 && "$(KBUILD_TARGET)" != "darwin" && !defined(VBOX_WITHOUT_PRECOMPILED_HEADERS)
513 if $(VBOX_GCC_VERSION_CXX) >= 50000 # GCC 4.x runs into trouble compiling the header.
514VBoxSVC_USES += gccprecomp
515VBoxSVC_PCH_HDR := $(PATH_SUB_CURRENT)/src-server/xpcom/precomp_gcc.h
516 endif
517endif
518VBoxSVC_DEFS = \
519 IN_VBOXSVC \
520 VBOX_MAIN_SETTINGS_ADDONS \
521 IN_VMM_STATIC \
522 $(VBOX_MAIN_DEFS) \
523 $(if $(VBOX_WITH_VBOXSDL),VBOX_WITH_VBOXSDL,) \
524 $(if $(VBOX_WITH_HEADLESS),VBOX_WITH_HEADLESS,) \
525 $(if $(VBOX_WITH_QTGUI),VBOX_WITH_QTGUI,) \
526 $(if $(VBOX_WITH_AHCI),VBOX_WITH_AHCI,) \
527 $(if $(VBOX_WITH_LSILOGIC),VBOX_WITH_LSILOGIC,) \
528 $(if $(VBOX_WITH_LINUX_COMPILER_H),VBOX_WITH_LINUX_COMPILER_H,) \
529 $(if $(VBOX_WITH_RESOURCE_USAGE_API),VBOX_WITH_RESOURCE_USAGE_API,) \
530 $(if $(VBOX_WITH_UNATTENDED),VBOX_WITH_UNATTENDED,) \
531 $(if $(VBOX_WITH_DBUS),VBOX_WITH_DBUS,) \
532 $(if $(VBOX_WITH_DBUS),$(if $(VBOX_USB_WITH_DBUS),VBOX_USB_WITH_DBUS,),) \
533 $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,) \
534 $(if $(VBOX_USB_WITH_INOTIFY),VBOX_USB_WITH_INOTIFY,) \
535 $(if $(VBOX_WITH_NAT_SERVICE),VBOX_WITH_NAT_SERVICE,) \
536 $(if $(VBOX_WITH_IOMMU_AMD),VBOX_WITH_IOMMU_AMD,) \
537 $(if $(VBOX_WITH_IOMMU_INTEL),VBOX_WITH_IOMMU_INTEL,) \
538 $(if $(VBOX_WITH_TPM),VBOX_WITH_TPM,) \
539 $(if $(VBOX_WITH_FULL_VM_ENCRYPTION),VBOX_WITH_FULL_VM_ENCRYPTION,) \
540 $(if-expr defined(VBOX_WITH_SDS),VBOX_WITH_SDS,)
541ifdef VBOX_WITH_USB
542 VBoxSVC_DEFS += \
543 VBOX_WITH_USB \
544 $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \
545 $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,)
546endif
547VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x0600
548# Try to load and use libhal at runtime for probing removable media
549# VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
550VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
551
552if $(KBUILD_TARGET) != "win" && $(VBOX_GCC_VERSION_CXX) >= 40900 # gcc 4.9.x (4.8.x is causing endless RT_ELEMENT trouble)
553 VBoxSVC_CXXFLAGS = -Wunused -Wconversion
554endif
555
556VBoxSVC_INCS = \
557 include \
558 $(VBoxSVC_0_OUTDIR) \
559 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
560 $(VBOX_MAIN_APIWRAPPER_INCS) \
561 . \
562 $(VBOX_GRAPHICS_INCS)
563VBoxSVC_INCS.win = \
564 $(VBoxCOM_0_OUTDIR)
565ifdef VBOX_WITH_USB
566 VBoxSVC_INCS.os2 = \
567 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
568endif
569
570VBoxSVC_LIBS += \
571 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) \
572 $(PATH_STAGE_LIB)/SSMStandalone$(VBOX_SUFF_LIB) \
573 $(LIB_DDU)
574
575VBoxSVC_SDKS = VBOX_LIBPNG VBOX_ZLIB
576VBoxSVC_LIBS.solaris = \
577 adm \
578 nsl \
579 devinfo \
580 socket
581
582VBoxSVC_LIBS.win += \
583 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/dnsapi.lib
584
585VBoxSVC_INTERMEDIATES = \
586 $(VBOX_MAIN_PREREQS) \
587 $(VBOX_XML_SCHEMADEFS_H) \
588 $(VBOX_AUTOGEN_EVENT_H) \
589 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H) \
590 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
591
592VBoxSVC_SOURCES = \
593 $(VBOX_SVC_CERTS_FILE) \
594 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
595 src-all/AuthLibrary.cpp \
596 src-all/CryptoUtils.cpp \
597 src-all/DisplayPNGUtil.cpp \
598 src-all/DisplayResampleImage.cpp \
599 src-all/DisplayUtils.cpp \
600 src-all/EventImpl.cpp \
601 src-all/Global.cpp \
602 src-all/GlobalStatusConversion.cpp \
603 src-all/HashedPw.cpp \
604 src-all/Logging.cpp \
605 src-all/NvramStoreImpl.cpp \
606 src-all/PCIDeviceAttachmentImpl.cpp \
607 src-all/ProgressImpl.cpp \
608 src-all/SecretKeyStore.cpp \
609 src-all/SharedFolderImpl.cpp \
610 src-all/AutoCaller.cpp \
611 src-all/ThreadTask.cpp \
612 src-all/VirtualBoxBase.cpp \
613 src-all/VirtualBoxErrorInfoImpl.cpp \
614 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
615 src-server/CertificateImpl.cpp \
616 src-server/ApplianceImpl.cpp \
617 src-server/ApplianceImplExport.cpp \
618 src-server/ApplianceImplImport.cpp \
619 src-server/AudioAdapterImpl.cpp \
620 src-server/AudioSettingsImpl.cpp \
621 src-server/BandwidthControlImpl.cpp \
622 src-server/BandwidthGroupImpl.cpp \
623 src-server/BIOSSettingsImpl.cpp \
624 src-server/RecordingSettingsImpl.cpp \
625 src-server/RecordingScreenSettingsImpl.cpp \
626 src-server/GraphicsAdapterImpl.cpp \
627 src-server/ClientWatcher.cpp \
628 src-server/ClientToken.cpp \
629 src-server/CloudProviderManagerImpl.cpp \
630 src-server/CPUProfileImpl.cpp \
631 src-server/DataStreamImpl.cpp \
632 src-server/DHCPServerImpl.cpp \
633 src-server/DHCPConfigImpl.cpp \
634 ../NetworkServices/Dhcpd/DhcpOptions.cpp \
635 src-server/NetworkServiceRunner.cpp \
636 src-server/NATNetworkImpl.cpp \
637 $(if $(VBOX_WITH_CLOUD_NET), \
638 src-server/CloudNetworkImpl.cpp \
639 ,) \
640 src-server/GuestOSTypeImpl.cpp \
641 src-server/HostDnsService.cpp \
642 src-server/HostImpl.cpp \
643 src-server/HostAudioDeviceImpl.cpp \
644 src-server/HostNetworkInterfaceImpl.cpp \
645 src-server/HostPower.cpp \
646 $(if $(VBOX_WITH_LIBCURL), \
647 $(if $(VBOX_WITH_UPDATE_AGENT), \
648 src-server/UpdateAgentImpl.cpp,), \
649 ) \
650 src-server/HostVideoInputDeviceImpl.cpp \
651 src-server/HostDrivePartitionImpl.cpp \
652 src-server/HostDriveImpl.cpp \
653 src-server/MachineImpl.cpp \
654 src-all/MachineLaunchVMCommonWorker.cpp \
655 src-server/MachineImplCloneVM.cpp \
656 src-server/MachineImplMoveVM.cpp \
657 src-server/Matching.cpp \
658 src-server/MediumAttachmentImpl.cpp \
659 src-server/MediumFormatImpl.cpp \
660 src-server/MediumImpl.cpp \
661 src-server/MediumLock.cpp \
662 src-server/MediumIOImpl.cpp \
663 src-server/NATEngineImpl.cpp \
664 src-server/NetworkAdapterImpl.cpp \
665 src-server/ParallelPortImpl.cpp \
666 src-server/ProgressProxyImpl.cpp \
667 src-server/SerialPortImpl.cpp \
668 src-server/SnapshotImpl.cpp \
669 src-server/StorageControllerImpl.cpp \
670 src-server/SystemPropertiesImpl.cpp \
671 src-server/TokenImpl.cpp \
672 src-server/TrustedPlatformModuleImpl.cpp \
673 src-server/UefiVariableStoreImpl.cpp \
674 $(if $(VBOX_WITH_UNATTENDED), \
675 src-server/UnattendedImpl.cpp \
676 src-server/UnattendedInstaller.cpp \
677 src-server/UnattendedOs2Installer.cpp \
678 src-server/UnattendedScript.cpp \
679 src-all/TextScript.cpp \
680 ,) \
681 src-server/USBControllerImpl.cpp \
682 src-server/USBDeviceFiltersImpl.cpp \
683 src-server/VFSExplorerImpl.cpp \
684 src-server/VirtualBoxImpl.cpp \
685 src-server/VRDEServerImpl.cpp \
686 src-server/generic/AutostartDb-generic.cpp \
687 xml/ovfreader.cpp \
688 xml/Settings.cpp \
689 $(VBOX_XML_SCHEMADEFS_CPP) \
690 $(VBOX_AUTOGEN_EVENT_CPP) \
691 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP) \
692 $(if $(VBOX_WITH_XPCOM),src-server/xpcom/server.cpp,)
693
694ifdef VBOX_WITH_MAIN_NLS
695VBoxSVC_SOURCES += \
696 src-all/VirtualBoxTranslator.cpp \
697 src-all/QMTranslatorImpl.cpp
698endif
699
700ifn1of ($(KBUILD_TARGET), win darwin)
701VBoxSVC_SOURCES += $(PATH_ROOT)/src/VBox/Devices/Network/slirp/resolv_conf_parser.c
702#$(PATH_ROOT)/src/VBox/Devices/Network/slirp/resolv_conf_parser.c_DEFS += LOG_GROUP=LOG_GROUP_MAIN
703endif
704
705VBoxSVC_SOURCES.darwin = \
706 src-server/darwin/iokit.cpp \
707 src-server/darwin/HostPowerDarwin.cpp \
708 src-server/darwin/HostDnsServiceDarwin.cpp
709ifdef VBOX_WITH_VMNET
710 VBoxSVC_SOURCES.darwin += \
711 src-server/HostOnlyNetworkImpl.cpp
712endif
713
714VBoxSVC_SOURCES.win = \
715 src-server/win/svcmain.cpp \
716 src-server/win/svchlp.cpp \
717 src-server/win/HostPowerWin.cpp \
718 src-server/win/VBoxSVC.rc \
719 src-server/win/HostDnsServiceWin.cpp
720
721VBoxSVC_SOURCES.linux = \
722 src-server/linux/HostHardwareLinux.cpp \
723 src-server/linux/HostDnsServiceLinux.cpp \
724 $(if $(VBOX_WITH_DBUS),src-server/linux/HostPowerLinux.cpp) \
725 src-server/HostDnsServiceResolvConf.cpp
726
727VBoxSVC_SOURCES.solaris = \
728 src-server/linux/vbox-libhal.cpp \
729 src-server/solaris/DynLoadLibSolaris.cpp \
730 src-server/HostDnsServiceResolvConf.cpp
731
732VBoxSVC_SOURCES.os2 = \
733 src-server/HostDnsServiceResolvConf.cpp
734
735VBoxSVC_SOURCES.freebsd = \
736 src-server/freebsd/HostHardwareFreeBSD.cpp \
737 src-server/HostDnsServiceResolvConf.cpp
738
739VBoxSVC_LDFLAGS.freebsd += -lcam
740
741
742ifdef VBOX_WITH_USB
743 ifdef VBOX_WITH_SYSFS_BY_DEFAULT
744 src-server/linux/USBProxyBackendLinux.cpp_DEFS += VBOX_WITH_SYSFS_BY_DEFAULT
745 endif
746 VBoxSVC_SOURCES += \
747 src-server/USBDeviceFilterImpl.cpp \
748 src-server/USBProxyService.cpp \
749 src-server/USBProxyBackend.cpp \
750 src-server/generic/USBProxyBackendUsbIp.cpp \
751 src-server/HostUSBDeviceImpl.cpp
752 VBoxSVC_SOURCES.darwin += src-server/darwin/USBProxyBackendDarwin.cpp
753 VBoxSVC_SOURCES.linux += src-server/linux/USBProxyBackendLinux.cpp
754 VBoxSVC_SOURCES.linux += src-server/linux/USBGetDevices.cpp
755 VBoxSVC_SOURCES.os2 += src-server/os2/USBProxyBackendOs2.cpp
756 VBoxSVC_SOURCES.solaris += src-server/solaris/USBProxyBackendSolaris.cpp
757 VBoxSVC_SOURCES.win += src-server/win/USBProxyBackendWindows.cpp
758 VBoxSVC_SOURCES.freebsd += src-server/freebsd/USBProxyBackendFreeBSD.cpp
759endif
760
761ifdef VBOX_WITH_NETFLT
762 VBoxSVC_SDKS.win += VBOX_WIN_NEWDEV
763 VBoxSVC_LIBS.win += \
764 $(PATH_STAGE_LIB)/WinNetConfigNonStatic$(VBOX_SUFF_LIB) \
765 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
766 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
767 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
768endif
769VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration
770
771ifdef VBOX_WITH_3D_ACCELERATION
772 VBoxSVC_DEFS += VBOX_WITH_3D_ACCELERATION
773 VBoxSVC_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
774 VBoxSVC_LDFLAGS.darwin += -framework OpenGL
775endif
776
777ifeq ($(KBUILD_TYPE),debug)
778 VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
779endif
780
781ifdef VBOX_WITH_RESOURCE_USAGE_API
782 VBoxSVC_SOURCES += \
783 src-server/PerformanceImpl.cpp \
784 src-server/Performance.cpp
785 VBoxSVC_SOURCES.darwin += src-server/darwin/PerformanceDarwin.cpp
786 VBoxSVC_SOURCES.freebsd += src-server/freebsd/PerformanceFreeBSD.cpp
787 VBoxSVC_SOURCES.linux += src-server/linux/PerformanceLinux.cpp
788 VBoxSVC_SOURCES.os2 += src-server/os2/PerformanceOs2.cpp
789 VBoxSVC_SOURCES.solaris += src-server/solaris/PerformanceSolaris.cpp
790 VBoxSVC_SOURCES.win += src-server/win/PerformanceWin.cpp
791 VBoxSVC_LDFLAGS.darwin += -lproc
792 VBoxSVC_LDFLAGS.solaris += -lkstat -lnvpair
793 VBoxSVC_LDFLAGS.win += psapi.lib powrprof.lib
794endif
795
796ifdef VBOX_WITH_HOSTNETIF_API
797 VBoxSVC_SOURCES.win += src-server/win/NetIf-win.cpp
798 VBoxSVC_SOURCES.linux += src-server/linux/NetIf-linux.cpp
799 VBoxSVC_SOURCES.os2 += src-server/os2/NetIf-os2.cpp
800 VBoxSVC_SOURCES.darwin += src-server/darwin/NetIf-darwin.cpp
801 VBoxSVC_SOURCES.solaris += src-server/solaris/NetIf-solaris.cpp
802 VBoxSVC_SOURCES.freebsd += src-server/freebsd/NetIf-freebsd.cpp
803 VBoxSVC_DEFS += VBOX_WITH_HOSTNETIF_API
804 if1of ($(KBUILD_TARGET), linux darwin solaris freebsd)
805 VBoxSVC_SOURCES += src-server/generic/NetIf-generic.cpp
806 endif
807endif
808
809$(call KB_FN_DO_PASS0_ON_TARGET,VBoxSVC) # Sets VBoxSVC_0_OUTDIR
810
811ifdef VBOX_WITH_MAIN_USB_ID_DATABASE # Generate a database of USB vendor IDs and device IDs.
812 VBoxSVC_DEFS += VBOX_WITH_MAIN_USB_ID_DATABASE
813 VBoxSVC_SOURCES += $(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp
814 VBoxSVC_CLEAN += $(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp
815
816 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp)
817 $(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp: $$(USBIdDatabaseGenerator_1_TARGET) \
818 $(PATH_SUB_CURRENT)/src-server/usb.ids $(PATH_SUB_CURRENT)/src-server/custom.ids | $$(dir $$@)
819 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
820 $(call MSG_GENERATE,USBIdDatabase,$@,$(USBIdDatabaseGenerator_1_TARGET))
821 $(QUIET)$(USBIdDatabaseGenerator_1_TARGET) -o "$@" $(filter %.ids,$^)
822
823 BLDPROGS += USBIdDatabaseGenerator
824 USBIdDatabaseGenerator_TEMPLATE = VBoxAdvBldProg
825 USBIdDatabaseGenerator_SOURCES = src-server/USBIdDatabaseGenerator.cpp
826else
827 VBoxSVC_SOURCES += src-server/USBIdDatabaseStub.cpp
828endif
829
830src-server/win/VBoxSVC.rc_INCS = $(VBoxSVC_0_OUTDIR)
831src-server/win/VBoxSVC.rc_DEPS = $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
832VBoxSVC_CLEAN += $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
833$(call KB_FN_AUTO_CMD_DEPS,$(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc)
834$(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc: $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$@)
835 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
836 $(APPEND) -t $@ '1 ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
837
838ifndef VBOX_WITH_MIDL_PROXY_STUB
839 src-server/win/VBoxSVC.rc_DEPS += $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs
840 VBoxSVC_CLEAN += $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs
841 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs)
842 $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
843 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
844 $(VBOX_XSLTPROC) \
845 --stringparam Application VirtualBox \
846 --stringparam Module VBoxSVC \
847 -o $@ \
848 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
849 $(VBOX_XIDL_FILE)
850endif
851
852## @todo r=klaus unfortunately we don't have xmllint everywhere, would be
853# good to check the validity for every VirtualBox.xidl change.
854#$(VBOX_XIDL_FILE).validated.ts: $(VBOX_XIDL_FILE_SRC)
855# xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
856# $(QUIET)$(CP) --changed -fv $< $(VBOX_XIDL_FILE).validated.ts
857#
858#OTHERS += $(VBOX_XIDL_FILE).validated.ts
859#OTHER_CLEAN += $(VBOX_XIDL_FILE).validated.ts
860
861testvalidxidl: $(VBOX_XIDL_FILE_SRC)
862 xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
863
864
865#
866# Embed some constraints from XML Schema file into VBoxSVC
867#
868VBOX_XML_SCHEMA = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings.xsd
869
870$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
871 $(call MSG_GENERATE,SchemaDefs,$@,$<)
872 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
873
874$(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
875 $(call MSG_GENERATE,SchemaDefs,$@,$<)
876 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
877
878testvalidsettings: $(VBOX_XML_SCHEMA)
879 xmllint --schema $< --noout $(HOME)/.VirtualBox/VirtualBox.xml
880 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.xml
881 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.vbox
882 xmllint --schema $< --noout $(HOME)/VirtualBox\ VMs/*/*.vbox
883
884OTHER_CLEAN += $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
885
886
887#
888# Generate some event stuff for VBoxSVC and VBoxC.
889#
890
891# Events
892$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_EVENT_H).ts)
893$(VBOX_AUTOGEN_EVENT_H).ts +| $(VBOX_AUTOGEN_EVENT_H): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
894 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
895 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
896 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEventHeader -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl" "$(VBOX_XIDL_FILE)"
897 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_EVENT_H)"
898
899$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_EVENT_CPP).ts)
900$(VBOX_AUTOGEN_EVENT_CPP).ts +| $(VBOX_AUTOGEN_EVENT_CPP): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
901 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
902 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
903 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEvent -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl" "$(VBOX_XIDL_FILE)"
904 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_EVENT_CPP)"
905
906OTHER_CLEAN += $(VBOX_AUTOGEN_EVENT_H).ts $(VBOX_AUTOGEN_EVENT_H) $(VBOX_AUTOGEN_EVENT_CPP).ts $(VBOX_AUTOGEN_EVENT_CPP)
907
908# Enum stringifiers
909$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_STRINGIFY_ENUMS_H).ts)
910$(VBOX_AUTOGEN_STRINGIFY_ENUMS_H).ts +| $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H): $(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
911 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
912 $(call MSG_TOOL,xsltproc,autogen enum stringifiers,$<,$@)
913 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind header -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl" "$(VBOX_XIDL_FILE)"
914 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_STRINGIFY_ENUMS_H)"
915
916$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP).ts)
917$(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP).ts +| $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP): $(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
918 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
919 $(call MSG_TOOL,xsltproc,autogen enum stringifiers,$<,$@)
920 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind source -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl" "$(VBOX_XIDL_FILE)"
921 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP)"
922
923OTHER_CLEAN += $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H).ts $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H) $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP).ts $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP)
924
925ifdef VBOX_WITH_XPCOM
926#
927# VBoxSVCM - VBoxSVC wrapper module
928#
929DLLS += VBoxSVCM
930VBoxSVCM_TEMPLATE = VBOXMAINCOMP
931VBoxSVCM_DEFS = IN_RING3 $(VBOX_MAIN_DEFS)
932 ifdef VBOX_WITH_HARDENING
933VBoxSVCM_DEFS += VBOX_WITH_HARDENING
934 endif
935VBoxSVCM_INCS = \
936 include \
937 $(VBoxC_0_OUTDIR) \
938 .
939VBoxSVCM_INTERMEDIATES = $(VBOX_MAIN_PREREQS)
940VBoxSVCM_SOURCES = \
941 src-server/xpcom/server_module.cpp
942VBoxSVCM_LDFLAGS.darwin = \
943 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
944 -exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
945 ifeq ($(KBUILD_TARGET),darwin)
946VBoxSVCM_ORDERDEPS += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
947VBoxSVCM_CLEAN += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
948$$(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def:
949 $(RM) -f $@
950 $(APPEND) $@ _NSGetModule
951 endif
952VBoxSVCM_INTERMEDIATES += $(VBOX_IDL_HEADER.XPCOM)
953
954 # 32-bit version of the module.
955 ifdef VBOX_WITH_32_ON_64_MAIN_API
956DLLS += VBoxSVCM-x86
957VBoxSVCM-x86_TEMPLATE = VBoxMainComp-x86
958VBoxSVCM-x86_EXTENDS = VBoxSVCM
959 endif
960
961endif # VBOX_WITH_XPCOM
962
963
964#
965# VBoxC module
966#
967DLLS += VBoxC
968VBoxC_TEMPLATE = VBOXMAINCOMP
969if defined(VBOX_WITH_PRECOMPILED_HEADERS) && "$(KBUILD_TARGET)" == "win"
970 VBoxC_USES = vccprecomp
971 VBoxC_PCH_HDR := $(PATH_SUB_CURRENT)/src-client/win/precomp_vcc.h
972else if $(KBUILD_KMK_REVISION) >= 3256 && "$(KBUILD_TARGET)" != "darwin" && !defined(VBOX_WITHOUT_PRECOMPILED_HEADERS)
973 if $(VBOX_GCC_VERSION_CXX) >= 50000 # GCC 4.x runs into trouble compiling the header.
974VBoxC_USES += gccprecomp
975VBoxC_PCH_HDR := $(PATH_SUB_CURRENT)/src-client/xpcom/precomp_gcc.h
976 endif
977endif
978VBoxC_DEFS = \
979 IN_RING3 \
980 $(VBOX_MAIN_DEFS) \
981 VBOX_COM_INPROC \
982 $(if $(VBOX_WITH_EFI),VBOX_WITH_EFI,) \
983 $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \
984 $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \
985 $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
986 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
987 $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \
988 $(if $(VBOX_WITH_VRDEAUTH_IN_VBOXSVC),VBOX_WITH_VRDEAUTH_IN_VBOXSVC,) \
989 $(if $(VBOX_WITH_IOMMU_AMD),VBOX_WITH_IOMMU_AMD,) \
990 $(if $(VBOX_WITH_IOMMU_INTEL),VBOX_WITH_IOMMU_INTEL,) \
991 $(if $(VBOX_WITH_TPM),VBOX_WITH_TPM,) \
992 $(if $(VBOX_WITH_FULL_VM_ENCRYPTION),VBOX_WITH_FULL_VM_ENCRYPTION,)
993ifdef VBOX_WITH_NETSHAPER
994 VBoxC_DEFS += VBOX_WITH_NETSHAPER
995endif
996VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE
997VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
998VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
999
1000if $(KBUILD_TARGET) != "win" && $(VBOX_GCC_VERSION_CXX) >= 40900 # gcc 4.9.x (4.8.x is causing endless RT_ELEMENT trouble)
1001# VBoxC_CXXFLAGS = -Wunused -Wconversion
1002endif
1003
1004VBoxC_SDKS = VBOX_LIBPNG VBOX_ZLIB
1005
1006ifdef VBOX_WITH_RECORDING
1007 ifdef VBOX_WITH_LIBVPX
1008 VBoxC_SDKS += VBOX_VPX
1009 VBoxC_DEFS += VBOX_WITH_LIBVPX
1010 endif
1011 VBoxC_SOURCES += \
1012 src-client/EBMLWriter.cpp \
1013 src-client/WebMWriter.cpp \
1014 src-client/Recording.cpp \
1015 src-client/RecordingInternals.cpp \
1016 src-client/RecordingCodec.cpp \
1017 src-client/RecordingStream.cpp \
1018 src-client/RecordingUtils.cpp
1019
1020 ifdef VBOX_WITH_AUDIO_RECORDING
1021 VBoxC_DEFS += VBOX_WITH_AUDIO_RECORDING
1022 # Needed in VBoxSVC for ISystemProperties.
1023 src-server/SystemPropertiesImpl.cpp_DEFS += VBOX_WITH_AUDIO_RECORDING
1024 ifdef VBOX_WITH_LIBOPUS
1025 VBoxC_SDKS += VBOX_OPUS
1026 VBoxC_DEFS += VBOX_WITH_LIBOPUS
1027 # Needed in VBoxSVC for ISystemProperties.
1028 src-server/SystemPropertiesImpl.cpp_DEFS += VBOX_WITH_LIBOPUS
1029 endif
1030 ifdef VBOX_WITH_LIBOGG
1031 VBoxC_SDKS += VBOX_OGG
1032 VBoxC_DEFS += VBOX_WITH_LIBOGG
1033 endif
1034 ifdef VBOX_WITH_LIBVORBIS
1035 VBoxC_SDKS += VBOX_VORBIS
1036 VBoxC_DEFS += VBOX_WITH_LIBVORBIS
1037 # Needed in VBoxSVC for ISystemProperties.
1038 src-server/SystemPropertiesImpl.cpp_DEFS += VBOX_WITH_LIBVORBIS
1039 endif
1040 VBoxC_SOURCES += src-client/DrvAudioRec.cpp
1041 endif # VBOX_WITH_AUDIO_RECORDING
1042endif # VBOX_WITH_RECORDING
1043
1044ifdef VBOX_WITH_OPENSSL_FIPS
1045VBoxC_SDKS += VBOX_OPENSSL2
1046endif
1047
1048VBoxC_INCS = \
1049 include \
1050 $(VBoxC_0_OUTDIR) \
1051 $(VBOX_MAIN_APIWRAPPER_INCS) \
1052 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
1053 $(VBOX_MAIN_APIWRAPPER_DIR)/dtrace \
1054 $(VBOX_GRAPHICS_INCS)
1055VBoxC_INCS.win = \
1056 $(VBoxCOM_0_OUTDIR) \
1057 .
1058
1059VBoxC_LDFLAGS.darwin = \
1060 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxC.dylib \
1061 -exported_symbols_list $(VBoxC_0_OUTDIR)/VBoxC.def \
1062 -framework IOKit
1063VBoxC_LDFLAGS.win += /MANIFEST \
1064 /DELAYLOAD:user32.dll
1065
1066
1067VBoxC_LIBS += \
1068 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB)
1069VBoxC_LIBS.win += \
1070 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/psapi.lib \
1071 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
1072ifdef VBOX_WITH_NETFLT
1073 VBoxC_SDKS.win += VBOX_WIN_NEWDEV
1074 VBoxC_LIBS.win += \
1075 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
1076 $(PATH_STAGE_LIB)/WinNetConfigNonStatic$(VBOX_SUFF_LIB) \
1077 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
1078 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
1079 VBoxC_LDFLAGS.win += \
1080 /DELAYLOAD:newdev.dll \
1081 /DELAYLOAD:setupapi.dll \
1082 /DELAYLOAD:iphlpapi.dll
1083endif
1084
1085ifdef VBOX_WITH_DRAG_AND_DROP
1086 VBoxC_LIBS += $(PATH_STAGE_LIB)/VBoxDnDHostR3Lib$(VBOX_SUFF_LIB)
1087endif
1088
1089VBoxC_INTERMEDIATES = \
1090 $(VBOX_MAIN_PREREQS) \
1091 $(VBOX_XML_SCHEMADEFS_H) \
1092 $(VBOX_AUTOGEN_EVENT_H) \
1093 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H) \
1094 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1095
1096VBoxC_SOURCES += \
1097 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
1098 src-all/CryptoUtils.cpp \
1099 src-all/DisplayPNGUtil.cpp \
1100 src-all/DisplayResampleImage.cpp \
1101 src-all/EventImpl.cpp \
1102 src-all/Global.cpp \
1103 src-all/GlobalStatusConversion.cpp \
1104 src-all/HashedPw.cpp \
1105 src-all/Logging.cpp \
1106 src-all/NvramStoreImpl.cpp \
1107 src-all/PCIDeviceAttachmentImpl.cpp \
1108 src-all/ProgressImpl.cpp \
1109 src-all/SecretKeyStore.cpp \
1110 src-all/SharedFolderImpl.cpp \
1111 src-all/AutoCaller.cpp \
1112 src-all/ThreadTask.cpp \
1113 src-all/VirtualBoxBase.cpp \
1114 src-all/VirtualBoxErrorInfoImpl.cpp \
1115 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
1116 src-client/UsbWebcamInterface.cpp \
1117 $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \
1118 src-client/AdditionsFacilityImpl.cpp \
1119 src-client/BusAssignmentManager.cpp \
1120 $(if $(VBOX_WITH_PCI_PASSTHROUGH),src-client/PCIRawDevImpl.cpp,) \
1121 src-client/ClientTokenHolder.cpp \
1122 src-client/ConsoleImpl.cpp \
1123 src-client/ConsoleImpl2.cpp \
1124 src-client/ConsoleImplTeleporter.cpp \
1125 src-client/ConsoleVRDPServer.cpp \
1126 src-client/DisplayImpl.cpp \
1127 src-client/DisplayImplLegacy.cpp \
1128 src-client/DisplaySourceBitmapImpl.cpp \
1129 src-client/EmulatedUSBImpl.cpp \
1130 src-client/GuestImpl.cpp \
1131 src-client/GuestCtrlImpl.cpp \
1132 src-client/KeyboardImpl.cpp \
1133 src-client/MachineDebuggerImpl.cpp \
1134 src-client/MouseImpl.cpp \
1135 src-client/RemoteUSBDeviceImpl.cpp \
1136 src-client/SessionImpl.cpp \
1137 src-client/USBDeviceImpl.cpp \
1138 src-client/VBoxDriversRegister.cpp \
1139 src-client/VirtualBoxClientImpl.cpp \
1140 src-client/VMMDevInterface.cpp \
1141 xml/Settings.cpp \
1142 $(VBOX_AUTOGEN_EVENT_CPP) \
1143 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP) \
1144 $(VBOX_XML_SCHEMADEFS_CPP)
1145
1146ifdef VBOX_WITH_MAIN_NLS
1147VBoxC_SOURCES += \
1148 src-all/VirtualBoxTranslator.cpp \
1149 src-all/QMTranslatorImpl.cpp
1150endif
1151
1152# Experimental cloud support
1153if defined(VBOX_WITH_CLOUD_NET)
1154 if defined(VBOX_WITH_LIBSSH)
1155 VBoxC_SDKS += VBOX_SSH VBOX_OPENSSL
1156 VBoxC_DEFS += LIBSSH_STATIC VBOX_WITH_LIBSSH
1157 endif
1158 VBoxC_SOURCES += src-client/CloudGateway.cpp
1159endif
1160
1161# Audio bits.
1162VBoxC_SOURCES += \
1163 src-client/AudioDriver.cpp \
1164 $(if $(VBOX_WITH_AUDIO_VRDE),src-client/DrvAudioVRDE.cpp,)
1165
1166VBoxC_SOURCES.win = \
1167 src-client/win/dllmain.cpp \
1168 src-client/win/VBoxC.def \
1169 src-client/win/VBoxC.rc
1170ifdef VBOX_WITH_GUEST_CONTROL
1171 VBoxC_SOURCES += \
1172 src-client/GuestSessionImplTasks.cpp \
1173 src-client/GuestCtrlPrivate.cpp \
1174 src-client/GuestDirectoryImpl.cpp \
1175 src-client/GuestFileImpl.cpp \
1176 src-client/GuestFsObjInfoImpl.cpp \
1177 src-client/GuestProcessImpl.cpp \
1178 src-client/GuestSessionImpl.cpp
1179endif
1180ifdef VBOX_WITH_DRAG_AND_DROP
1181 VBoxC_SOURCES += \
1182 src-client/GuestDnDPrivate.cpp \
1183 src-client/GuestDnDSourceImpl.cpp \
1184 src-client/GuestDnDTargetImpl.cpp \
1185 $(PATH_ROOT)/src/VBox/GuestHost/DragAndDrop/DnDUtils.cpp
1186endif
1187ifdef VBOX_WITH_XPCOM
1188 VBoxC_SOURCES += \
1189 src-client/xpcom/module.cpp
1190endif
1191ifdef VBOX_WITH_HGCM
1192 VBoxC_SOURCES += \
1193 src-client/HGCMObjects.cpp \
1194 src-client/HGCMThread.cpp \
1195 src-client/HGCM.cpp
1196endif
1197ifdef VBOX_WITH_USB
1198 VBoxC_SOURCES += \
1199 src-client/RemoteUSBBackend.cpp
1200endif
1201ifndef VBOX_WITH_VRDEAUTH_IN_VBOXSVC
1202 VBoxC_SOURCES += \
1203 src-all/AuthLibrary.cpp
1204endif
1205
1206$(call KB_FN_DO_PASS0_ON_TARGET,VBoxC) # Sets VBoxC_0_OUTDIR
1207
1208ifeq ($(KBUILD_TARGET),darwin)
1209 VBoxC_ORDERDEPS += $(VBoxC_0_OUTDIR)/VBoxC.def
1210 VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxC.def
1211 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxC_0_OUTDIR)/VBoxC.def)
1212 $(VBoxC_0_OUTDIR)/VBoxC.def:
1213 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1214 $(RM) -f $@
1215 $(APPEND) $@ _NSGetModule
1216 $(APPEND) $@ _VBoxDriversRegister
1217endif
1218
1219src-client/ConsoleImpl.cpp_DEFS = \
1220 $(if $(VBOX_WITH_OPENSSL_FIPS), VBOX_OPENSSL_FIPS,)
1221
1222
1223src-client/win/VBoxC.rc_DEPS = $(VBoxC_0_OUTDIR)/VBoxC.rgs $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
1224VBoxC_CLEAN.win += $(VBoxC_0_OUTDIR)/VBoxC.rgs
1225$(call KB_FN_AUTO_CMD_DEPS,$(VBoxC_0_OUTDIR)/VBoxC.rgs)
1226$(VBoxC_0_OUTDIR)/VBoxC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1227 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1228 $(VBOX_XSLTPROC) \
1229 --stringparam Application VirtualBox \
1230 --stringparam Module VBoxC \
1231 -o $@ \
1232 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
1233 $(VBOX_XIDL_FILE)
1234
1235ifdef VBOX_WITH_32_ON_64_MAIN_API
1236 #
1237 # 32-bit VBox API Client In-Process module.
1238 #
1239 # This is currently just a 32-bit version of VBoxC. It might be desirable to
1240 # split up VBoxC into a simple client and a VM client part later, in which
1241 # case this module will be a simple client.
1242 #
1243 # Note! One important thing is that the typelib for this DLL must be build
1244 # with the /env win32 switch and the VBoxC typelib with /env amd64, if
1245 # not they will overwrite each others typelib module entry.
1246 #
1247 DLLS += VBoxClient-x86
1248 VBoxClient-x86_TEMPLATE = VBoxMainComp-x86
1249 VBoxClient-x86_EXTENDS = VBoxC
1250if defined(VBOX_WITH_PRECOMPILED_HEADERS) && "$(KBUILD_TARGET)" == "win" ## @todo fix inheritance (fixed in r3253)
1251 VBoxClient-x86_USES = vccprecomp
1252 VBoxClient-x86_PCH_HDR := $(PATH_SUB_CURRENT)/src-client/win/precomp_vcc.h
1253endif
1254 VBoxClient-x86_SDKS = $(filter-out VBOX_OPUS VBOX_VPX,$(VBoxC_SDKS))
1255 VBoxClient-x86_DEFS = VBOX_COM_INPROC_API_CLIENT \
1256 $(filter-out VBOX_WITH_RECORDING VBOX_WITH_AUDIO_RECORDING \
1257 VBOX_WITH_LIBVPX VBOX_WITH_LIBOPUS,$(VBoxC_DEFS))
1258 VBoxClient-x86_INCS.win = \
1259 $(VBoxClient-x86_0_OUTDIR) \
1260 $(VBoxCOM-x86_0_OUTDIR) \
1261 $(VBoxC_INCS.win)
1262 VBoxClient-x86_SOURCES = \
1263 src-all/EventImpl.cpp \
1264 src-all/Global.cpp \
1265 src-all/GlobalStatusConversion.cpp \
1266 src-all/AutoCaller.cpp \
1267 src-all/ThreadTask.cpp \
1268 src-all/VirtualBoxBase.cpp \
1269 src-all/VirtualBoxErrorInfoImpl.cpp \
1270 src-client/ClientTokenHolder.cpp \
1271 src-client/SessionImpl.cpp \
1272 src-client/VirtualBoxClientImpl.cpp \
1273 $(VBOX_AUTOGEN_EVENT_CPP) \
1274 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP) \
1275 $(VBOX_XML_SCHEMADEFS_CPP)
1276 ifdef VBOX_WITH_MAIN_NLS
1277 VBoxClient-x86_SOURCES += \
1278 src-all/VirtualBoxTranslator.cpp \
1279 src-all/QMTranslatorImpl.cpp
1280 endif
1281 VBoxClient-x86_SOURCES.win = \
1282 src-client/win/dllmain.cpp \
1283 src-client/win/VBoxClient-x86.def \
1284 src-client/win/VBoxClient-x86.rc
1285 ifdef VBOX_WITH_XPCOM
1286 VBoxClient-x86_SOURCES += \
1287 src-client/xpcom/module.cpp
1288 endif
1289 VBoxClient-x86_LIBS = \
1290 $(PATH_STAGE_LIB)/VBoxAPIWrap-x86$(VBOX_SUFF_LIB)
1291 VBoxClient-x86_LIBS.win = $(NO_SUCH_VARIABLE)
1292 VBoxClient-x86_LIBS.win.x86 += \
1293 $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/delayimp.lib \
1294 $(PATH_SDK_$(VBOX_WINPSDK)_LIB.x86)/WbemUuid.Lib
1295 VBoxClient-x86_CLEAN.win += $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs
1296 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxClient-x86) # Sets VBoxClient-x86_0_OUTDIR
1297
1298 src-client/win/VBoxClient-x86.rc_DEPS = \
1299 $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs \
1300 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
1301
1302 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs)
1303 $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs: \
1304 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
1305 $(VBOX_XIDL_FILE) | $$(dir $$@)
1306 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1307 $(VBOX_XSLTPROC) \
1308 --stringparam Application VirtualBox \
1309 --stringparam Module VBoxC \
1310 -o $@ \
1311 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
1312 $(VBOX_XIDL_FILE)
1313endif
1314
1315#
1316# The VBoxExtPackHelperApp.
1317#
1318ifdef VBOX_WITH_EXTPACK
1319 PROGRAMS += VBoxExtPackHelperApp
1320 VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot
1321 VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security
1322 VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows
1323 VBoxExtPackHelperApp_SOURCES = \
1324 src-helper-apps/VBoxExtPackHelperApp.cpp \
1325 src-all/ExtPackUtil.cpp
1326 VBoxExtPackHelperApp_SOURCES.win = \
1327 src-helper-apps/VBoxExtPackHelperApp.rc
1328 VBoxExtPackHelperApp_LIBS = \
1329 $(LIB_RUNTIME)
1330endif # VBOX_WITH_EXTPACK
1331
1332#
1333# VolInfo
1334#
1335ifdef VBOX_WITH_DEVMAPPER
1336 PROGRAMS.linux += VBoxVolInfo
1337 VBoxVolInfo_TEMPLATE = VBoxR3SetUidToRoot
1338 VBoxVolInfo_SOURCES = src-helper-apps/VBoxVolInfo.cpp
1339 VBoxVolInfo_LIBS = devmapper
1340endif
1341
1342
1343endif # !defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_EXTPACKS) (the ifndef is far above)
1344ifndef VBOX_ONLY_SDK
1345
1346
1347#
1348# VBoxCOM - COM Abstraction Layer library
1349#
1350LIBRARIES += VBoxCOM
1351VBoxCOM_TEMPLATE = VBoxMainLib
1352VBoxCOM_INTERMEDIATES = $(VBOX_MAIN_PREREQS) \
1353 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1354VBoxCOM_SOURCES = \
1355 glue/com.cpp \
1356 glue/VBoxLogRelCreate.cpp \
1357 glue/GetVBoxUserHomeDirectory.cpp \
1358 glue/initterm.cpp \
1359 glue/string.cpp \
1360 glue/string-base64.cpp \
1361 glue/AutoLock.cpp \
1362 glue/EventQueue.cpp \
1363 glue/NativeEventQueue.cpp \
1364 glue/ErrorInfo.cpp \
1365 glue/errorprint.cpp
1366VBoxCOM_INCS += $(VBOX_MAIN_APIWRAPPER_INCS) \
1367 include
1368ifeq ($(KBUILD_TARGET),win)
1369 ifdef VBOX_WITH_MIDL_PROXY_STUB
1370 VBoxCOM_DEFS.win = VBOX_WITH_AUTO_COM_REG_UPDATE
1371 endif
1372 ifdef VBOX_WITH_SDS
1373 VBoxCOM_DEFS.win += VBOX_WITH_SDS
1374 endif
1375 VBoxCOM_DEFS.x86 = _WIN32_WINNT=0x0500
1376 VBoxCOM_DEFS.amd64 = _WIN32_WINNT=0x0510
1377 VBoxCOM_SOURCES += \
1378 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c
1379 VBoxCOM_CLEAN = \
1380 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1381 $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c \
1382 $(VBoxCOM_0_OUTDIR)/dlldata.c \
1383 $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
1384 $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
1385 VBoxCOM_CLEAN += \
1386 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c \
1387 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c \
1388 $(VBoxCOM_0_OUTDIR)/legacy/dlldata.c \
1389 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.h \
1390 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.tlb
1391 VBoxCOM_BLDDIRS = $(VBoxCOM_0_OUTDIR)/legacy/
1392else # !win
1393 VBoxCOM_SOURCES += \
1394 $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c \
1395 glue/xpcom/helpers.cpp
1396endif # !win
1397
1398ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1399glue/VBoxLogRelCreate.cpp_DEFS = KBUILD_TYPE="$(KBUILD_TYPE)"
1400else
1401glue/VBoxLogRelCreate.cpp_DEFS = KBUILD_TYPE=\"$(KBUILD_TYPE)\"
1402endif
1403
1404# 32-bit version of VBoxCOM.
1405if defined(VBOX_WITH_32_ON_64_MAIN_API) && !defined(VBOX_ONLY_EXTPACKS)
1406 LIBRARIES += VBoxCOM-x86
1407 VBoxCOM-x86_TEMPLATE = VBoxMainLib-x86
1408 VBoxCOM-x86_EXTENDS = VBoxCOM
1409 ifeq ($(KBUILD_TARGET),win)
1410 VBoxCOM-x86_CLEAN = \
1411 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1412 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c \
1413 $(VBoxCOM-x86_0_OUTDIR)/dlldata.c \
1414 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h \
1415 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
1416 endif
1417endif
1418
1419# -MD version for the GUI in -MDd builds.
1420ifeq ($(KBUILD_TARGET).$(VBOX_VCC_CRT_TYPE),win.d)
1421 ifndef VBOX_ONLY_EXTPACKS
1422 LIBRARIES += VBoxCOM-GUI
1423 USES += qt5
1424 VBoxCOM-GUI_TEMPLATE = VBOXQTGUI$(if-expr defined(VBOX_WITH_HARDENING),,EXE)
1425 VBoxCOM-GUI_EXTENDS = VBoxCOM
1426 endif
1427endif
1428
1429# define qt5 tools for translation even if VBOX_ONLY_EXTPACKS is enabled
1430ifdef VBOX_WITH_NLS
1431 USES += qt5
1432endif
1433
1434
1435endif # !VBOX_ONLY_SDK
1436
1437
1438#
1439# Installs com related thing(s) to bin.
1440#
1441INSTALLS.win += VBoxMain-com-inst
1442VBoxMain-com-inst_INST = $(INST_BIN)
1443VBoxMain-com-inst_MODE = a+r,u+w
1444VBoxMain-com-inst_SOURCES = src-all/win/comregister.cmd
1445
1446
1447if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "linux" && !defined(VBOX_ONLY_EXTPACKS)
1448 #
1449 # Installs linux/hardening related things to components.
1450 #
1451 INSTALLS.linux += VBoxMain-hardening-inst
1452 VBoxMain-hardening-inst_INST = $(INST_BIN)components/
1453 VBoxMain-hardening-inst_SYMLINKS = \
1454 VBoxDDU.so=>../VBoxDDU.so \
1455 VBoxRT.so=>../VBoxRT.so \
1456 VBoxVMM.so=>../VBoxVMM.so \
1457 VBoxXPCOM.so=>../VBoxXPCOM.so
1458endif
1459
1460
1461if defined(VBOX_WITH_MIDL_PROXY_STUB) && "$(KBUILD_TARGET)" == "win" && !defined(VBOX_ONLY_EXTPACKS)
1462 #
1463 # Experimental COM proxy + stub DLL w/ automatic registration updating.
1464 #
1465 # The Legacy stub is for older 64-bit windows versions (pre Windows 7) as we
1466 # were having various problems on windows server 2003 and 2008 with the code
1467 # MIDL generated. Also, in windows 7 there are some potentially interesting
1468 # changes in the generated code where it uses new helpers from OLE32.
1469 #
1470 DLLS += VBoxProxyStub
1471 VBoxProxyStub_TEMPLATE = VBOXMAINCOMP
1472 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1473 VBoxProxyStub_DEFS := REGISTER_PROXY_DLL PROXY_CLSID_IS=$(quote $(VBOX_MIDL_PROXY_CLSID_IS))
1474 else
1475 VBoxProxyStub_DEFS := REGISTER_PROXY_DLL PROXY_CLSID_IS="$(VBOX_MIDL_PROXY_CLSID_IS)"
1476 endif
1477 ifdef VBOX_WITH_SDS
1478 VBoxProxyStub_DEFS += VBOX_WITH_SDS
1479 endif
1480 ifdef VBOX_WITH_SDS_CLIENT_WATCHER
1481 VBoxProxyStub_DEFS += VBOX_WITH_SDS_CLIENT_WATCHER,)
1482 endif
1483 VBoxProxyStub_DEFS.win.x86 = WIN32
1484 VBoxProxyStub_SDKS = VBOX_NTDLL
1485 VBoxProxyStub_DEFPATH = $(VBoxCOM_0_OUTDIR)/# Hack to workaround drive letter in $(VBoxCOM_0_OUTDIR)/ for CFLAGS hack below.
1486 VBoxProxyStub_INCS = $(VBoxCOM_0_OUTDIR)/
1487 VBoxProxyStub_SOURCES := \
1488 VirtualBox_p.c \
1489 VirtualBox_i.c \
1490 $(PATH_SUB_CURRENT)/src-all/win/VBoxProxyStub.def \
1491 $(PATH_SUB_CURRENT)/src-all/win/VBoxProxyStub.rc \
1492 $(PATH_SUB_CURRENT)/src-all/win/VBoxProxyStub.c
1493 src-all/win/VBoxProxyStub.rc_DEPS = $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
1494 VBoxProxyStub_VirtualBox_p.c_CFLAGS.x86 = /Gz # Workaround for incorrect ObjectStublessClient* prototypes in SDK v7.1.
1495
1496 DLLS += VBoxProxyStubLegacy
1497 VBoxProxyStubLegacy_TEMPLATE = VBOXMAINCOMP
1498 VBoxProxyStubLegacy_EXTENDS = VBoxProxyStub
1499 VBoxProxyStubLegacy_DEFS = $(VBoxProxyStub_DEFS) VBOX_IN_PROXY_STUB_LEGACY
1500 VBoxProxyStubLegacy_INCS = $(VBoxCOM_0_OUTDIR)/legacy/
1501 VBoxProxyStubLegacy_SOURCES = \
1502 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c \
1503 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c \
1504 src-all/win/VBoxProxyStub.def \
1505 src-all/win/VBoxProxyStubLegacy.rc \
1506 src-all/win/VBoxProxyStub.c
1507 src-all/win/VBoxProxyStubLegacy.rc_DEPS = $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.tlb
1508
1509 ifdef VBOX_WITH_32_ON_64_MAIN_API
1510 DLLS += VBoxProxyStub-x86
1511 VBoxProxyStub-x86_TEMPLATE = VBoxMainComp-x86
1512 VBoxProxyStub-x86_SDKS = VBOX_NTDLL
1513 VBoxProxyStub-x86_DEFS = $(VBoxProxyStub_DEFS) VBOX_PROXY_STUB_32_ON_64 WIN32
1514 VBoxProxyStub-x86_INCS = $(VBoxCOM-x86_0_OUTDIR)/
1515 VBoxProxyStub-x86_SOURCES = \
1516 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c \
1517 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1518 src-all/win/VBoxProxyStub.c \
1519 src-all/win/VBoxProxyStub-x86.rc \
1520 src-all/win/VBoxProxyStub.def
1521 src-all/win/VBoxProxyStub-x86.rc_DEPS = $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
1522 endif
1523endif
1524
1525
1526ifdef VBOX_WITH_MAIN_NLS
1527#
1528# NLS stuff.
1529#
1530include $(PATH_SUB_CURRENT)/nls/ApprovedLanguages.kmk
1531
1532PROGRAMS += VirtualBoxAPI
1533VirtualBoxAPI_TEMPLATE = VBoxNLS
1534VirtualBoxAPI_QT_TRANSLATIONS = $(addsuffix .ts,$(addprefix $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_,$(VBOX_APPROVED_MAIN_LANGUAGES)))
1535VirtualBoxAPI_VBOX_ALL_NLS_SOURCES = $(wildcard \
1536 $(VBOX_PATH_MAIN_SRC)/include/*.h\
1537 $(VBOX_PATH_MAIN_SRC)/src-all/*.cpp \
1538 $(VBOX_PATH_MAIN_SRC)/src-all/*.h \
1539 $(VBOX_PATH_MAIN_SRC)/src-server/*.cpp \
1540 $(VBOX_PATH_MAIN_SRC)/src-server/*.h \
1541 $(VBOX_PATH_MAIN_SRC)/src-client/*.cpp \
1542 $(VBOX_PATH_MAIN_SRC)/src-client/*.h )
1543
1544updatenls:: makeallnls $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_en.ts
1545
1546makeallnls:: $(VirtualBoxAPI_VBOX_ALL_NLS_SOURCES)
1547 $(call MSG_L1,lupdate all languages (nls/*.ts))
1548 $(QUIET)$(TOOL_QT5_LUPDATE) \
1549 $^ \
1550 -ts \
1551 $(filter-out nls/VirtualBoxAPI_en.ts, $(VirtualBoxAPI_QT_TRANSLATIONS)) \
1552 $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_xx_YY.ts
1553
1554#fake-main-nls:
1555# $(foreach file, $(VirtualBoxAPI_QT_TRANSLATIONS) \
1556# ,$(NLTAB)$(SED) -i \
1557# -e '/<source>.*<\/source>/h' \
1558# -e '/<source>.*<\/source>/p' \
1559# -e '/<translation type="unfinished"><\/translation>/{' \
1560# -e 'x' \
1561# -e 's/<source>\(.*\)<\/source>/<translation type="unfinished">$(notdir $(file)): \1<\/translation>/' \
1562# -e '}' \
1563# $(file) )
1564
1565
1566# Create the English translation file. This is something special cause it will
1567# contain the plural forms only.
1568$(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_en.ts: $(VirtualBoxAPI_VBOX_ALL_NLS_SOURCES)
1569 $(call MSG_L1,lupdate $@)
1570 $(QUIET)$(TOOL_QT5_LUPDATE) \
1571 $^ \
1572 -ts \
1573 "$@"
1574 $(QUIET)$(SED) -n -i \
1575 -e '/<context>/,/<\/context>/!p' \
1576 -e '/<context>/h' \
1577 -e '/<name>/H' \
1578 -e '/<message numerus="yes">/,/<\/message>/H' \
1579 -e '/<\/context>/{H;x;/<message/p}' \
1580 "$@"
1581
1582endif # VBOX_WITH_MAIN_NLS
1583
1584
1585# generate rules
1586include $(FILE_KBUILD_SUB_FOOTER)
1587
1588
1589
1590#
1591# Additions rules.
1592#
1593
1594## @todo this hack ain't cutting it any longer. (the file name is abspath'ed since ages now.)
1595glue/xpcom/helpers.cpp: $(VBOX_IDL_TYPELIB.XPCOM)
1596
1597$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_FILE.XPCOM),$(PATH_OUT)/VBOX_IDL_FILE.XPCOM.vbox-dep)
1598$(VBOX_IDL_FILE.XPCOM): $(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1599 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_FILE.XPCOM.vbox-dep)
1600 $(call MSG_TOOL,xsltproc,VBoxSVC,$(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl,$@)
1601 $(QUIET)$(VBOX_XSLTPROC) -o $@ $(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl $(VBOX_XIDL_FILE)
1602
1603$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_TYPELIB.XPCOM),$(PATH_OUT)/VBOX_IDL_TYPELIB.XPCOM.vbox-dep)
1604$(VBOX_IDL_TYPELIB.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1605 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_TYPELIB.XPCOM.vbox-dep)
1606 $(call MSG_TOOL,xpidl,VBoxSVC,$(VBOX_IDL_FILE.XPCOM),$@)
1607 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m typelib -I $(VBOX_PATH_XPCOM_IDL) -e $@ $(VBOX_IDL_FILE.XPCOM)
1608 $(CHMOD) 0644 $@
1609## @todo ^^^^^^^^^^^^ fix horrible hack
1610
1611$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_HEADER.XPCOM),$(PATH_OUT)/VBOX_IDL_HEADER.XPCOM.vbox-dep)
1612$(VBOX_IDL_HEADER.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1613 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_HEADER.XPCOM.vbox-dep)
1614 $(call MSG_TOOL,xpidl,VBoxSVC,$(VBOX_IDL_FILE.XPCOM),$@)
1615 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m header -I $(VBOX_PATH_XPCOM_IDL) -e $@ $(VBOX_IDL_FILE.XPCOM)
1616
1617$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_FILE.MSCOM),$(PATH_OUT)/VBOX_IDL_FILE.MSCOM.vbox-dep)
1618$(VBOX_IDL_FILE.MSCOM): $(VBOX_PATH_MAIN_SRC)/idl/midl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1619 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_FILE.MSCOM.vbox-dep)
1620 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1621 $(QUIET)$(VBOX_XSLTPROC) -o $@ \
1622 $(if $(VBOX_WITH_MIDL_PROXY_STUB),-stringparam g_fGenProxy yes,) \
1623 $(if $(VBOX_WITH_SDS),-stringparam g_fVBoxWithSDS yes,) \
1624 $(VBOX_PATH_MAIN_SRC)/idl/midl.xsl $(VBOX_XIDL_FILE)
1625
1626
1627# Aliases for testing purposes.
1628ifdef VBOX_WITH_XPCOM
1629testidl: $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c
1630testidlhdr: $(VBOX_IDL_HEADER.XPCOM)
1631else
1632testidl: $(VBOX_IDL_FILE.MSCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1633 $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c,)
1634endif
1635
1636
1637$(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c: $(VBOX_PATH_MAIN_SRC)/idl/xpidl_iid.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1638 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1639 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
1640
1641if defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" == "win"
1642
1643 # Note! Because we've got a different proxy stub DLL for pre windows 7 64-bit hosts, we target windows 7 for AMD64.
1644 # The output is different and hopefully more efficient, at least memory wise (using more helpers in OLE32).
1645 # Note! We're checking for win.amd64 below when setting the target because of the SDK build which happens on linux.amd64
1646 # but with a 32-bit Wine.
1647 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c)
1648 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1649 $(if $(VBOX_WITH_MIDL_PROXY_STUB), + $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM_0_OUTDIR)/dlldata.c,) \
1650 + $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
1651 + $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1652 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1653 $(VBOX_MIDL_REDIRECT) $(VBOX_WIN_MIDL) /nologo /W4 \
1654 /env $(if-expr "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.amd64" ,amd64,win32) \
1655 /robust /protocol all /target $(if-expr defined(VBOX_WITH_MIDL_PROXY_STUB),NT61,NT51) \
1656 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM_0_OUTDIR)) \
1657 /cpp_cmd $(VBOX_MIDL_CPP_CMD) \
1658 $(foreachfile dir,$(SDK_$(VBOX_WINPSDK)_INCS),/I $(call VBOX_FN_MAKE_WIN_PATH,$(dir))) \
1659 /I idl \
1660 $(call VBOX_FN_MAKE_WIN_PATH,$(VBOX_IDL_FILE.MSCOM))
1661 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/VirtualBox.h)
1662 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c)
1663 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/VirtualBox_p.c)
1664
1665 if defined(VBOX_WITH_MIDL_PROXY_STUB)
1666 # -Windows Server 2003 AMD64 SP1 does not like the result when using '/protocol all' and '/target NT51'.
1667 # -Vista AMD64 SP1 and Windows Server 2008 AMD64 seems to have some objections as well, but it seemed
1668 # that using an older MIDL compiler (v7.00.0499 instead of v7.00.0555) helps. But the W2K3 fix also works.
1669 # To avoid 32-bit vs. 64-bit differences, we do the same for 32-bit windows versions.
1670 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c)
1671 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c \
1672 + $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c\
1673 + $(VBoxCOM_0_OUTDIR)/legacy/dlldata.c \
1674 + $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.h \
1675 + $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1676 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1677 $(VBOX_MIDL_REDIRECT) $(VBOX_WIN_MIDL) /nologo /W4 \
1678 $(if-expr "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.amd64" \
1679 ,/env amd64 /x64 /target NT50 /robust \
1680 ,/env win32 /target NT51 /robust /protocol all ) \
1681 /out $(call VBOX_FN_MAKE_WIN_PATH,$(dir $@)) \
1682 /cpp_cmd $(VBOX_MIDL_CPP_CMD) \
1683 $(foreachfile dir,$(SDK_$(VBOX_WINPSDK)_INCS),/I $(call VBOX_FN_MAKE_WIN_PATH,$(dir))) \
1684 /I idl \
1685 $(call VBOX_FN_MAKE_WIN_PATH,$(VBOX_IDL_FILE.MSCOM))
1686 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.h)
1687 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c)
1688 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c)
1689 endif
1690
1691 if defined(VBOX_WITH_32_ON_64_MAIN_API) && !defined(VBOX_ONLY_EXTPACKS)
1692 # The XP targetted 32-bit proxy stub works with all versions of windows (the
1693 # issues leading to the VBoxProxyStubLegacy.dll are only on 64-bit windows).
1694 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c)
1695 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1696 $(if $(VBOX_WITH_MIDL_PROXY_STUB), + $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM-x86_0_OUTDIR)/dlldata.c,) \
1697 + $(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h \
1698 + $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1699 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1700 $(VBOX_MIDL_REDIRECT_X86) $(VBOX_WIN_MIDL) /nologo /W4 \
1701 /env win32 /target NT51 /robust /protocol all \
1702 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)) \
1703 /tlb $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb) \
1704 /cpp_cmd $(VBOX_MIDL_CPP_CMD_X86) \
1705 $(foreachfile dir,$(SDK_$(VBOX_WINPSDK)_INCS),/I $(call VBOX_FN_MAKE_WIN_PATH,$(dir))) \
1706 /I idl \
1707 $(call VBOX_FN_MAKE_WIN_PATH,$(VBOX_IDL_FILE.MSCOM))
1708 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h)
1709 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c)
1710 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c)
1711 endif
1712
1713endif # defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" == "win"
1714
1715#
1716# Translation stuff
1717#
1718VBoxSVC_VBOX_HEADERS = \
1719 include/collection.h \
1720 include/MachineImpl.h
1721VBoxSVC_VBOX_TRANSLATIONS = \
1722 nls/VBoxSVC_de.ts
1723
1724VBoxC_VBOX_HEADERS = \
1725 include/ConsoleImpl.h
1726
1727VBoxC_VBOX_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1728VBoxC_VBOX_HEADERS += $(VBOX_MAIN_APIWRAPPER_INCS)
1729
1730VBoxC_VBOX_TRANSLATIONS = \
1731 nls/VBoxC_de.ts
1732
1733ifdef VBOX_WITH_JMSCOM
1734
1735 #
1736 # Java glue JAR files
1737 #
1738 VBOX_JMSCOM_JAR = $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
1739 VBOX_JMSCOM_TARGET := $(PATH_TARGET)/vboxjmscom-gen
1740 VBOX_JMSCOM_GEN = $(VBOX_JMSCOM_TARGET)/jmscomgen
1741 VBOX_JMSCOM_JDEST := $(VBOX_JMSCOM_TARGET)/jdest
1742 VBOX_GLUE_XSLT_DIR := $(PATH_ROOT)/src/VBox/Main/glue
1743 VBOX_JACOB_DIR := $(PATH_ROOT)/src/libs/jacob-1.17
1744
1745 INSTALLS += VBoxJMscom-inst-jar
1746 VBoxJMscom-inst-jar_INST = $(INST_SDK)bindings/mscom/java/
1747 VBoxJMscom-inst-jar_MODE = a+r,u+w
1748 VBoxJMscom-inst-jar_SOURCES = \
1749 $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
1750 VBoxJMscom-inst-jar_CLEAN = \
1751 $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar \
1752 $(VBOX_JMSCOM_GEN)/jmscomglue.list \
1753 $(wildcard \
1754 $(VBOX_JMSCOM_GEN)/java/*.java \
1755 $(VBOX_JMSCOM_JDEST)/*.class \
1756 $(VBOX_JMSCOM_JDEST)/*/*.class \
1757 $(VBOX_JMSCOM_JDEST)/*/*/*.class \
1758 $(VBOX_JMSCOM_JDEST)/*/*/*/*.class \
1759 )
1760 VBoxJMscom-inst-jar_BLDDIRS += $(VBOX_JMSCOM_GEN)/java
1761 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxJMscom-inst-jar) # Sets VBoxJMscom-inst-jar_0_OUTDIR
1762
1763 $(call KB_FN_AUTO_CMD_DEPS,$(VBOX_JMSCOM_GEN)/jmscomglue.list)
1764 $(VBOX_JMSCOM_GEN)/jmscomglue.list: \
1765 $(VBOX_XIDL_FILE) \
1766 $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl \
1767 $(VBOX_FILESPLIT) \
1768 | $(VBOX_JMSCOM_GEN)/java/
1769 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1770 $(call MSG_L1,Generating Java MSCOM glue files from XIDL)
1771 $(QUIET)$(RM) -f $(wildcard $(VBOX_JMSCOM_GEN)/java/*.java)
1772 $(QUIET)$(VBOX_XSLTPROC) \
1773 --stringparam filelistonly "" \
1774 --stringparam G_vboxApiSuffix $(VBOX_API_SUFFIX) \
1775 --stringparam G_vboxGlueStyle mscom \
1776 --stringparam G_vboxDirPrefix "" \
1777 -o $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl $(VBOX_XIDL_FILE)
1778 $(QUIET)$(VBOX_FILESPLIT) $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_JMSCOM_GEN)/java
1779 $(QUIET)echo $(VBOX_JMSCOM_GEN)/java/*.java > $@
1780
1781 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar)
1782 $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar: $(VBOX_JMSCOM_GEN)/jmscomglue.list | $$(dir $$@)
1783 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1784 $(call MSG_TOOL,javac,$(notdir $@),jmscomglue.list,)
1785 $(QUIET)$(RM) -Rf $(VBOX_JMSCOM_JDEST)
1786 $(QUIET)$(MKDIR) -p $(VBOX_JMSCOM_JDEST)
1787 $(call MSG_TOOL,javac,$(notdir $@),...,)
1788 $(QUIET)$(VBOX_JAVAC) $(VBOX_JAVAC_OPTS) @$(VBOX_JMSCOM_GEN)/jmscomglue.list \
1789 -d $(VBOX_JMSCOM_JDEST) -classpath "$(VBOX_JMSCOM_JDEST)$(VBOX_SEP)$(VBOX_JACOB_DIR)/jacob.jar"
1790 $(call MSG_LINK,$(notdir $@),$@)
1791 $(QUIET)$(VBOX_JAR) cf $@ -C $(VBOX_JMSCOM_JDEST) .
1792
1793 ## @todo compile TestVBox.java (see below) to have sanity checking
1794endif # VBOX_WITH_JMSCOM
1795
1796#
1797# Install Java glue sample code.
1798#
1799INSTALLS += javagluesample
1800javagluesample_INST = $(INST_SDK)bindings/glue/java/
1801javagluesample_MODE = a+r,u+w
1802javagluesample_SOURCES = \
1803 $(VBOX_PATH_MAIN_SRC)/glue/tests/TestVBox.java=>TestVBox.java \
1804 $(VBOX_PATH_MAIN_SRC)/glue/tests/Makefile=>Makefile
1805
1806#
1807# Rules associated with VBoxAPIWrap (in typical invocation order).
1808# We keep them down here to simplify the use of VBoxAPIWrap_0_OUTDIR.
1809#
1810
1811# Generate a make include file which lists the wrapper header and source files.
1812$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_VBOX_KMK_FILE).ts)
1813$(VBoxAPIWrap_VBOX_KMK_FILE).ts \
1814+| $(VBoxAPIWrap_VBOX_KMK_FILE): \
1815 $(VBOX_XIDL_FILE) \
1816 $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl \
1817 $(VBOX_PATH_MAIN_SRC)/Makefile.kmk
1818 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1819 $(call MSG_GENERATE,,$(VBoxAPIWrap_VBOX_KMK_FILE))
1820 $(QUIET)$(RM) -f $@
1821 $(QUIET)$(MKDIR) -p $(@D)
1822 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1823 $(if $(VBOX_WITH_SDS),-stringparam g_fVBoxWithSDS yes,) \
1824 -o $@ $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl $(VBOX_XIDL_FILE)
1825 $(QUIET)$(CP) --changed -fv $@ $(VBoxAPIWrap_VBOX_KMK_FILE)
1826
1827# Generate the header files for the wrappers.
1828$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers)
1829$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1830+| $(VBOX_MAIN_APIWRAPPER_GEN_HDRS): \
1831 $(VBOX_XIDL_FILE) \
1832 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1833 $(VBoxAPIWrap_VBOX_XSLT) \
1834 $(VBOX_FILESPLIT) \
1835 | $$(dir $$@)
1836 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1837 $(call MSG_L1,Generating C++ Server API wrapper header files from XIDL)
1838 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_HDRS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h))
1839 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1840 --stringparam generating "headers" \
1841 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1842 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1843
1844# Generate the DTrace probes for the wrappers and combine them with handcoded probes.
1845$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts)
1846$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1847+| $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d: \
1848 $(VBOX_XIDL_FILE) \
1849 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1850 $(VBoxAPIWrap_VBOX_XSLT) \
1851 $(VBOX_FILESPLIT) \
1852 | $$(dir $$@)
1853 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1854 $(call MSG_L1,Generating DTrace Provider for the VBox API (from XIDL))
1855 $(QUIET)$(RM) -f -- "$@" "[email protected]"
1856 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1857 --stringparam generating "dtrace-probes" \
1858 -o "$@" $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1859 $(QUIET)$(SED) -e '' -o "[email protected]" \
1860 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-start$(if-expr "$(VBOX_HOST_DTRACE_VERSION)" == "dtrace: Sun D 1.6.2",-alternative,).d" \
1861 "$@" \
1862 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-end$(if-expr "$(VBOX_HOST_DTRACE_VERSION)" == "dtrace: Sun D 1.6.2",-alternative,).d"
1863 $(QUIET)$(MV) -- "[email protected]" "$@"
1864 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d"
1865
1866# Generate the wrapper source files - split in two due to long processing time
1867$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even)
1868$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even \
1869+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_EVEN): \
1870 $(VBOX_XIDL_FILE) \
1871 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1872 $(VBoxAPIWrap_VBOX_XSLT) \
1873 $(VBOX_FILESPLIT) \
1874 | $$(dir $$@)
1875 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1876 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 1)
1877 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1878 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1879 --stringparam generating "sources" \
1880 --param reminder 0 \
1881 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1882 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1883
1884$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd)
1885$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1886+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_ODD): \
1887 $(VBOX_XIDL_FILE) \
1888 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1889 $(VBoxAPIWrap_VBOX_XSLT) \
1890 $(VBOX_FILESPLIT) \
1891 | $$(dir $$@)
1892 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1893 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 2)
1894 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1895 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1896 --stringparam generating "sources" \
1897 --param reminder 1 \
1898 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1899 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1900
1901testapiwrappers:: \
1902 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1903 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1904 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1905 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even
Note: See TracBrowser for help on using the repository browser.

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