VirtualBox

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

Last change on this file since 102797 was 102517, checked in by vboxsync, 13 months ago

Main/ConsoleImplConfigArmV8.cpp: Get rid of most hardcoded addresses and introduce a (very barebones right now) resource manager for managing the address map and interrupt assignments, most of the MMIO regions are now moved to the top of the address space. Only exception is the flash device holding the firmware and the MMIO region for PCI MEM32 BARs, bugref:10528

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