VirtualBox

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

Last change on this file since 104793 was 104793, checked in by vboxsync, 11 months ago

Main: Add new Microsoft certs issued 2023 (KEK, Windows boot loader CA and 3rd party boot loader CA). Touch up the variable naming slightly to reflect the use of the certs in the DB better. Add a pointer where to get the certs (the github project has URLs which are the real authority). bugref:10699

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