VirtualBox

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

Last change on this file since 105016 was 104803, checked in by vboxsync, 6 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 [scm]

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

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