VirtualBox

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

Last change on this file since 100111 was 100038, checked in by vboxsync, 18 months ago

Main: Start simple ResourceStore implementation similar to NvramStore but without all the file loading and saving as it will contain only resources created on the fly when the VM is created, bugref:10467

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 71.5 KB
Line 
1# $Id: Makefile.kmk 100038 2023-06-01 18:18:08Z 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 ifdef VBOX_WITH_USB
574 VBoxSVC_DEFS += \
575 VBOX_WITH_USB \
576 $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \
577 $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,)
578 endif
579 VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x0600
580 # Try to load and use libhal at runtime for probing removable media
581 # VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
582 VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
583
584 if $(KBUILD_TARGET) != "win" && $(VBOX_GCC_VERSION_CXX) >= 40900 # gcc 4.9.x (4.8.x is causing endless RT_ELEMENT trouble)
585 VBoxSVC_CXXFLAGS = -Wunused -Wconversion
586 endif
587
588 VBoxSVC_INCS = \
589 include \
590 $(VBoxSVC_0_OUTDIR) \
591 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
592 $(VBOX_MAIN_APIWRAPPER_INCS) \
593 . \
594 $(VBOX_GRAPHICS_INCS)
595 VBoxSVC_INCS.win = \
596 $(VBoxCOM_0_OUTDIR)
597 ifdef VBOX_WITH_USB
598 VBoxSVC_INCS.os2 = \
599 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
600 endif
601
602 VBoxSVC_LIBS += \
603 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) \
604 $(PATH_STAGE_LIB)/SSMStandalone$(VBOX_SUFF_LIB) \
605 $(LIB_DDU)
606
607 VBoxSVC_SDKS = VBoxLibPng VBoxZlib
608 VBoxSVC_LIBS.solaris = \
609 adm \
610 nsl \
611 devinfo \
612 socket
613
614 VBoxSVC_LIBS.win += \
615 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/dnsapi.lib
616
617 VBoxSVC_INTERMEDIATES = \
618 $(VBOX_MAIN_PREREQS) \
619 $(VBOX_XML_SCHEMADEFS_H) \
620 $(VBOX_AUTOGEN_EVENT_H) \
621 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H) \
622 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
623
624 VBoxSVC_SOURCES = \
625 $(VBOX_SVC_CERTS_FILE) \
626 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
627 src-all/AuthLibrary.cpp \
628 src-all/CryptoUtils.cpp \
629 src-all/DisplayPNGUtil.cpp \
630 src-all/DisplayResampleImage.cpp \
631 src-all/DisplayUtils.cpp \
632 src-all/EventImpl.cpp \
633 src-all/Global.cpp \
634 src-all/GlobalStatusConversion.cpp \
635 src-all/HashedPw.cpp \
636 src-all/Logging.cpp \
637 src-all/NvramStoreImpl.cpp \
638 src-all/PCIDeviceAttachmentImpl.cpp \
639 src-all/ProgressImpl.cpp \
640 src-all/SecretKeyStore.cpp \
641 src-all/SharedFolderImpl.cpp \
642 src-all/AutoCaller.cpp \
643 src-all/ThreadTask.cpp \
644 src-all/VirtualBoxBase.cpp \
645 src-all/VirtualBoxErrorInfoImpl.cpp \
646 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
647 src-server/CertificateImpl.cpp \
648 src-server/ApplianceImpl.cpp \
649 src-server/ApplianceImplExport.cpp \
650 src-server/ApplianceImplImport.cpp \
651 src-server/AudioAdapterImpl.cpp \
652 src-server/AudioSettingsImpl.cpp \
653 src-server/BandwidthControlImpl.cpp \
654 src-server/BandwidthGroupImpl.cpp \
655 src-server/BIOSSettingsImpl.cpp \
656 src-server/RecordingSettingsImpl.cpp \
657 src-server/RecordingScreenSettingsImpl.cpp \
658 src-server/GraphicsAdapterImpl.cpp \
659 src-server/ClientWatcher.cpp \
660 src-server/ClientToken.cpp \
661 src-server/CloudProviderManagerImpl.cpp \
662 src-server/CPUProfileImpl.cpp \
663 src-server/DataStreamImpl.cpp \
664 src-server/DHCPServerImpl.cpp \
665 src-server/DHCPConfigImpl.cpp \
666 ../NetworkServices/Dhcpd/DhcpOptions.cpp \
667 src-server/NetworkServiceRunner.cpp \
668 src-server/NATNetworkImpl.cpp \
669 $(if $(VBOX_WITH_CLOUD_NET), \
670 src-server/CloudNetworkImpl.cpp \
671 ,) \
672 src-server/GuestDebugControlImpl.cpp \
673 src-server/GuestOSTypeImpl.cpp \
674 src-server/HostDnsService.cpp \
675 src-server/HostImpl.cpp \
676 src-server/HostAudioDeviceImpl.cpp \
677 src-server/HostNetworkInterfaceImpl.cpp \
678 src-server/HostPower.cpp \
679 $(if $(VBOX_WITH_LIBCURL), \
680 $(if $(VBOX_WITH_UPDATE_AGENT), \
681 src-server/UpdateAgentImpl.cpp,), \
682 ) \
683 src-server/HostVideoInputDeviceImpl.cpp \
684 src-server/HostDrivePartitionImpl.cpp \
685 src-server/HostDriveImpl.cpp \
686 src-server/MachineImpl.cpp \
687 src-all/MachineLaunchVMCommonWorker.cpp \
688 src-server/MachineImplCloneVM.cpp \
689 src-server/MachineImplMoveVM.cpp \
690 src-server/Matching.cpp \
691 src-server/MediumAttachmentImpl.cpp \
692 src-server/MediumFormatImpl.cpp \
693 src-server/MediumImpl.cpp \
694 src-server/MediumLock.cpp \
695 src-server/MediumIOImpl.cpp \
696 src-server/NATEngineImpl.cpp \
697 src-server/NetworkAdapterImpl.cpp \
698 src-server/ParallelPortImpl.cpp \
699 src-server/ProgressProxyImpl.cpp \
700 src-server/SerialPortImpl.cpp \
701 src-server/SnapshotImpl.cpp \
702 src-server/StorageControllerImpl.cpp \
703 src-server/SystemPropertiesImpl.cpp \
704 src-server/TokenImpl.cpp \
705 src-server/TrustedPlatformModuleImpl.cpp \
706 src-server/UefiVariableStoreImpl.cpp \
707 $(if $(VBOX_WITH_UNATTENDED), \
708 src-server/UnattendedImpl.cpp \
709 src-server/UnattendedInstaller.cpp \
710 src-server/UnattendedOs2Installer.cpp \
711 src-server/UnattendedScript.cpp \
712 src-all/TextScript.cpp \
713 ,) \
714 src-server/USBControllerImpl.cpp \
715 src-server/USBDeviceFiltersImpl.cpp \
716 src-server/VFSExplorerImpl.cpp \
717 src-server/VirtualBoxImpl.cpp \
718 src-server/VRDEServerImpl.cpp \
719 src-server/generic/AutostartDb-generic.cpp \
720 xml/ovfreader.cpp \
721 xml/Settings.cpp \
722 $(VBOX_XML_SCHEMADEFS_CPP) \
723 $(VBOX_AUTOGEN_EVENT_CPP) \
724 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP) \
725 $(if $(VBOX_WITH_XPCOM),src-server/xpcom/server.cpp,)
726
727 ifdef VBOX_WITH_MAIN_NLS
728 VBoxSVC_SOURCES += \
729 src-all/VirtualBoxTranslator.cpp \
730 src-all/QMTranslatorImpl.cpp
731 endif
732
733 ifn1of ($(KBUILD_TARGET), win darwin)
734 VBoxSVC_SOURCES += $(PATH_ROOT)/src/VBox/Devices/Network/slirp/resolv_conf_parser.c
735 #$(PATH_ROOT)/src/VBox/Devices/Network/slirp/resolv_conf_parser.c_DEFS += LOG_GROUP=LOG_GROUP_MAIN
736 endif
737
738 VBoxSVC_SOURCES.darwin = \
739 src-server/darwin/iokit.cpp \
740 src-server/darwin/HostPowerDarwin.cpp \
741 src-server/darwin/HostDnsServiceDarwin.cpp
742 ifdef VBOX_WITH_VMNET
743 VBoxSVC_SOURCES.darwin += \
744 src-server/HostOnlyNetworkImpl.cpp
745 endif
746
747 VBoxSVC_SOURCES.win = \
748 src-server/win/svcmain.cpp \
749 src-server/win/svchlp.cpp \
750 src-server/win/HostPowerWin.cpp \
751 src-server/win/VBoxSVC.rc \
752 src-server/win/HostDnsServiceWin.cpp
753
754 VBoxSVC_SOURCES.linux = \
755 src-server/linux/HostHardwareLinux.cpp \
756 src-server/linux/HostDnsServiceLinux.cpp \
757 $(if $(VBOX_WITH_DBUS),src-server/linux/HostPowerLinux.cpp) \
758 src-server/HostDnsServiceResolvConf.cpp
759
760 VBoxSVC_SOURCES.solaris = \
761 src-server/linux/vbox-libhal.cpp \
762 src-server/solaris/DynLoadLibSolaris.cpp \
763 src-server/HostDnsServiceResolvConf.cpp
764
765 VBoxSVC_SOURCES.os2 = \
766 src-server/HostDnsServiceResolvConf.cpp
767
768 VBoxSVC_SOURCES.freebsd = \
769 src-server/freebsd/HostHardwareFreeBSD.cpp \
770 src-server/HostDnsServiceResolvConf.cpp
771
772 VBoxSVC_LDFLAGS.freebsd += -lcam
773
774
775 ifdef VBOX_WITH_USB
776 ifdef VBOX_WITH_SYSFS_BY_DEFAULT
777 src-server/linux/USBProxyBackendLinux.cpp_DEFS += VBOX_WITH_SYSFS_BY_DEFAULT
778 endif
779 VBoxSVC_SOURCES += \
780 src-server/USBDeviceFilterImpl.cpp \
781 src-server/USBProxyService.cpp \
782 src-server/USBProxyBackend.cpp \
783 src-server/generic/USBProxyBackendUsbIp.cpp \
784 src-server/HostUSBDeviceImpl.cpp
785 VBoxSVC_SOURCES.darwin += src-server/darwin/USBProxyBackendDarwin.cpp
786 VBoxSVC_SOURCES.linux += src-server/linux/USBProxyBackendLinux.cpp
787 VBoxSVC_SOURCES.linux += src-server/linux/USBGetDevices.cpp
788 VBoxSVC_SOURCES.os2 += src-server/os2/USBProxyBackendOs2.cpp
789 VBoxSVC_SOURCES.solaris += src-server/solaris/USBProxyBackendSolaris.cpp
790 VBoxSVC_SOURCES.win += src-server/win/USBProxyBackendWindows.cpp
791 VBoxSVC_SOURCES.freebsd += src-server/freebsd/USBProxyBackendFreeBSD.cpp
792 endif
793
794 ifdef VBOX_WITH_NETFLT
795 VBoxSVC_SDKS.win += VBoxWinNewDevLib
796 VBoxSVC_LIBS.win += \
797 $(PATH_STAGE_LIB)/WinNetConfigDll$(VBOX_SUFF_LIB) \
798 $(PATH_STAGE_LIB)/VBoxDrvCfgDll$(VBOX_SUFF_LIB) \
799 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
800 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
801 endif
802 VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration
803
804 ifdef VBOX_WITH_3D_ACCELERATION
805 VBoxSVC_DEFS += VBOX_WITH_3D_ACCELERATION
806 endif
807
808 ifeq ($(KBUILD_TYPE),debug)
809 VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
810 endif
811
812 ifdef VBOX_WITH_RESOURCE_USAGE_API
813 VBoxSVC_SOURCES += \
814 src-server/PerformanceImpl.cpp \
815 src-server/Performance.cpp
816 VBoxSVC_SOURCES.darwin += src-server/darwin/PerformanceDarwin.cpp
817 VBoxSVC_SOURCES.freebsd += src-server/freebsd/PerformanceFreeBSD.cpp
818 VBoxSVC_SOURCES.linux += src-server/linux/PerformanceLinux.cpp
819 VBoxSVC_SOURCES.os2 += src-server/os2/PerformanceOs2.cpp
820 VBoxSVC_SOURCES.solaris += src-server/solaris/PerformanceSolaris.cpp
821 VBoxSVC_SOURCES.win += src-server/win/PerformanceWin.cpp
822 VBoxSVC_LDFLAGS.darwin += -lproc
823 VBoxSVC_LDFLAGS.solaris += -lkstat -lnvpair
824 VBoxSVC_LDFLAGS.win += psapi.lib powrprof.lib
825 endif
826
827 ifdef VBOX_WITH_HOSTNETIF_API
828 VBoxSVC_SOURCES.win += src-server/win/NetIf-win.cpp
829 VBoxSVC_SOURCES.linux += src-server/linux/NetIf-linux.cpp
830 VBoxSVC_SOURCES.os2 += src-server/os2/NetIf-os2.cpp
831 VBoxSVC_SOURCES.darwin += src-server/darwin/NetIf-darwin.cpp
832 VBoxSVC_SOURCES.solaris += src-server/solaris/NetIf-solaris.cpp
833 VBoxSVC_SOURCES.freebsd += src-server/freebsd/NetIf-freebsd.cpp
834 VBoxSVC_DEFS += VBOX_WITH_HOSTNETIF_API
835 if1of ($(KBUILD_TARGET), linux darwin solaris freebsd)
836 VBoxSVC_SOURCES += src-server/generic/NetIf-generic.cpp
837 endif
838 endif
839
840 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxSVC) # Sets VBoxSVC_0_OUTDIR
841
842 ifdef VBOX_WITH_MAIN_USB_ID_DATABASE # Generate a database of USB vendor IDs and device IDs.
843 VBoxSVC_DEFS += VBOX_WITH_MAIN_USB_ID_DATABASE
844 VBoxSVC_SOURCES += $(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp
845 VBoxSVC_CLEAN += $(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp
846
847 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp)
848 $(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp: $$(USBIdDatabaseGenerator_1_TARGET) \
849 $(PATH_SUB_CURRENT)/src-server/usb.ids $(PATH_SUB_CURRENT)/src-server/custom.ids | $$(dir $$@)
850 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
851 $(call MSG_GENERATE,USBIdDatabase,$@,$(USBIdDatabaseGenerator_1_TARGET))
852 $(QUIET)$(USBIdDatabaseGenerator_1_TARGET) -o "$@" $(filter %.ids,$^)
853
854 BLDPROGS += USBIdDatabaseGenerator
855 USBIdDatabaseGenerator_TEMPLATE = VBoxAdvBldProg
856 USBIdDatabaseGenerator_SOURCES = src-server/USBIdDatabaseGenerator.cpp
857 else
858 VBoxSVC_SOURCES += src-server/USBIdDatabaseStub.cpp
859 endif
860
861 src-server/win/VBoxSVC.rc_INCS = $(VBoxSVC_0_OUTDIR)
862 src-server/win/VBoxSVC.rc_DEPS = $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
863 VBoxSVC_CLEAN += $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
864 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc)
865 $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc: $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$@)
866 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
867 $(APPEND) -t $@ '1 ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
868
869 ifndef VBOX_WITH_MIDL_PROXY_STUB
870 src-server/win/VBoxSVC.rc_DEPS += $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs
871 VBoxSVC_CLEAN += $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs
872 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs)
873 $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
874 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
875 $(VBOX_XSLTPROC) \
876 --stringparam Application VirtualBox \
877 --stringparam Module VBoxSVC \
878 -o $@ \
879 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
880 $(VBOX_XIDL_FILE)
881 endif
882
883 ## @todo r=klaus unfortunately we don't have xmllint everywhere, would be
884 # good to check the validity for every VirtualBox.xidl change.
885 #$(VBOX_XIDL_FILE).validated.ts: $(VBOX_XIDL_FILE_SRC)
886 # xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
887 # $(QUIET)$(CP) --changed -fv $< $(VBOX_XIDL_FILE).validated.ts
888 #
889 #OTHERS += $(VBOX_XIDL_FILE).validated.ts
890 #OTHER_CLEAN += $(VBOX_XIDL_FILE).validated.ts
891
892 testvalidxidl: $(VBOX_XIDL_FILE_SRC)
893 xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
894
895
896 #
897 # Embed some constraints from XML Schema file into VBoxSVC
898 #
899 VBOX_XML_SCHEMA = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings.xsd
900
901 $(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
902 $(call MSG_GENERATE,SchemaDefs,$@,$<)
903 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
904
905 $(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
906 $(call MSG_GENERATE,SchemaDefs,$@,$<)
907 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
908
909 testvalidsettings: $(VBOX_XML_SCHEMA)
910 xmllint --schema $< --noout $(HOME)/.VirtualBox/VirtualBox.xml
911 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.xml
912 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.vbox
913 xmllint --schema $< --noout $(HOME)/VirtualBox\ VMs/*/*.vbox
914
915 OTHER_CLEAN += $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
916
917
918 #
919 # Generate some event stuff for VBoxSVC and VBoxC.
920 #
921
922 # Events
923 $(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_EVENT_H).ts)
924 $(VBOX_AUTOGEN_EVENT_H).ts +| $(VBOX_AUTOGEN_EVENT_H): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
925 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
926 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
927 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEventHeader -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl" "$(VBOX_XIDL_FILE)"
928 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_EVENT_H)"
929
930 $(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_EVENT_CPP).ts)
931 $(VBOX_AUTOGEN_EVENT_CPP).ts +| $(VBOX_AUTOGEN_EVENT_CPP): $(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 VBoxEvent -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl" "$(VBOX_XIDL_FILE)"
935 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_EVENT_CPP)"
936
937 OTHER_CLEAN += $(VBOX_AUTOGEN_EVENT_H).ts $(VBOX_AUTOGEN_EVENT_H) $(VBOX_AUTOGEN_EVENT_CPP).ts $(VBOX_AUTOGEN_EVENT_CPP)
938
939 # Enum stringifiers
940 $(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_STRINGIFY_ENUMS_H).ts)
941 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H).ts +| $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H): $(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
942 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
943 $(call MSG_TOOL,xsltproc,autogen enum stringifiers,$<,$@)
944 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind header -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl" "$(VBOX_XIDL_FILE)"
945 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_STRINGIFY_ENUMS_H)"
946
947 $(call KB_FN_AUTO_CMD_DEPS,$(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP).ts)
948 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP).ts +| $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP): $(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 source -o "$@" "$(VBOX_PATH_MAIN_SRC)/idl/stringify-enums.xsl" "$(VBOX_XIDL_FILE)"
952 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP)"
953
954 OTHER_CLEAN += $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H).ts $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H) $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP).ts $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP)
955
956 ifdef VBOX_WITH_XPCOM
957 #
958 # VBoxSVCM - VBoxSVC wrapper module
959 #
960 DLLS += VBoxSVCM
961 VBoxSVCM_TEMPLATE = VBoxMainComp
962 VBoxSVCM_DEFS = IN_RING3 $(VBOX_MAIN_DEFS)
963 ifdef VBOX_WITH_HARDENING
964 VBoxSVCM_DEFS += VBOX_WITH_HARDENING
965 endif
966 VBoxSVCM_INCS = \
967 include \
968 $(VBoxC_0_OUTDIR) \
969 .
970 VBoxSVCM_INTERMEDIATES = $(VBOX_MAIN_PREREQS)
971 VBoxSVCM_SOURCES = \
972 src-server/xpcom/server_module.cpp
973 VBoxSVCM_LDFLAGS.darwin = \
974 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
975 -exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
976 ifeq ($(KBUILD_TARGET),darwin)
977 VBoxSVCM_ORDERDEPS += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
978 VBoxSVCM_CLEAN += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
979 $$(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def:
980 $(RM) -f $@
981 $(APPEND) $@ _NSGetModule
982 endif
983 VBoxSVCM_INTERMEDIATES += $(VBOX_IDL_HEADER.XPCOM)
984
985 # 32-bit version of the module.
986 ifdef VBOX_WITH_32_ON_64_MAIN_API
987 DLLS += VBoxSVCM-x86
988 VBoxSVCM-x86_TEMPLATE = VBoxMainComp-x86
989 VBoxSVCM-x86_EXTENDS = VBoxSVCM
990 endif
991
992 endif # VBOX_WITH_XPCOM
993
994
995 #
996 # VBoxC module
997 #
998 DLLS += VBoxC
999 VBoxC_TEMPLATE = VBoxMainComp
1000 if defined(VBOX_WITH_PRECOMPILED_HEADERS) && "$(KBUILD_TARGET)" == "win"
1001 VBoxC_USES = vccprecomp
1002 VBoxC_PCH_HDR := $(PATH_SUB_CURRENT)/src-client/win/precomp_vcc.h
1003 else if $(KBUILD_KMK_REVISION) >= 3256 && "$(KBUILD_TARGET)" != "darwin" && !defined(VBOX_WITHOUT_PRECOMPILED_HEADERS)
1004 if $(VBOX_GCC_VERSION_CXX) >= 50000 # GCC 4.x runs into trouble compiling the header.
1005 VBoxC_USES += gccprecomp
1006 VBoxC_PCH_HDR := $(PATH_SUB_CURRENT)/src-client/xpcom/precomp_gcc.h
1007 endif
1008 endif
1009 VBoxC_DEFS = \
1010 IN_RING3 \
1011 $(VBOX_MAIN_DEFS) \
1012 VBOX_COM_INPROC \
1013 $(if $(VBOX_WITH_EFI),VBOX_WITH_EFI,) \
1014 $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \
1015 $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \
1016 $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
1017 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
1018 $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \
1019 $(if $(VBOX_WITH_VRDEAUTH_IN_VBOXSVC),VBOX_WITH_VRDEAUTH_IN_VBOXSVC,) \
1020 $(if $(VBOX_WITH_IOMMU_AMD),VBOX_WITH_IOMMU_AMD,) \
1021 $(if $(VBOX_WITH_IOMMU_INTEL),VBOX_WITH_IOMMU_INTEL,) \
1022 $(if $(VBOX_WITH_TPM),VBOX_WITH_TPM,) \
1023 $(if $(VBOX_WITH_FULL_VM_ENCRYPTION),VBOX_WITH_FULL_VM_ENCRYPTION,) \
1024 $(if $(VBOX_WITH_VIRT_ARMV8),VBOX_WITH_VIRT_ARMV8,)
1025 ifdef VBOX_WITH_NETSHAPER
1026 VBoxC_DEFS += VBOX_WITH_NETSHAPER
1027 endif
1028 VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE
1029 VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
1030 VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
1031
1032 if $(KBUILD_TARGET) != "win" && $(VBOX_GCC_VERSION_CXX) >= 40900 # gcc 4.9.x (4.8.x is causing endless RT_ELEMENT trouble)
1033 # VBoxC_CXXFLAGS = -Wunused -Wconversion
1034 endif
1035
1036 VBoxC_SDKS = VBoxLibPng VBoxZlib
1037
1038 ifdef VBOX_WITH_RECORDING
1039 ifdef VBOX_WITH_LIBVPX
1040 VBoxC_SDKS += VBoxLibVpx
1041 VBoxC_DEFS += VBOX_WITH_LIBVPX
1042 endif
1043 VBoxC_SOURCES += \
1044 src-client/EBMLWriter.cpp \
1045 src-client/WebMWriter.cpp \
1046 src-client/Recording.cpp \
1047 src-client/RecordingInternals.cpp \
1048 src-client/RecordingCodec.cpp \
1049 src-client/RecordingStream.cpp \
1050 src-client/RecordingUtils.cpp
1051
1052 ifdef VBOX_WITH_AUDIO_RECORDING
1053 VBoxC_DEFS += VBOX_WITH_AUDIO_RECORDING
1054 # Needed in VBoxSVC for ISystemProperties.
1055 src-server/SystemPropertiesImpl.cpp_DEFS += VBOX_WITH_AUDIO_RECORDING
1056 ifdef VBOX_WITH_LIBOGG
1057 VBOX_MAIN_DEFS += VBOX_WITH_LIBOGG
1058 VBoxC_SDKS += VBoxLibOgg
1059 VBoxC_DEFS += VBOX_WITH_LIBOGG
1060 ## @todo We need this for libvorbis down below. Remove once the libvorbis @todo is resolved.
1061 VBoxSVC_SDKS += VBoxLibOgg
1062 endif
1063 ifdef VBOX_WITH_LIBVORBIS
1064 VBOX_MAIN_DEFS += VBOX_WITH_LIBVORBIS
1065 VBoxC_SDKS += VBoxLibVorbis
1066 ## @todo We also need to specify this for VBoxSVC, as we need to have VBOX_WITH_LIBVORBIS defined
1067 ## for SystemProperties::getSupportedRecordingAudioCodecs().
1068 # SystemPropertiesImpl_DEFS += VBOX_WITH_LIBVORBIS didn't work for precompiled headers on Windows --
1069 # needs to be solved properly so that we can remove the following _SDKS from VBoxSVC again.
1070 VBoxSVC_SDKS += VBoxLibVorbis
1071 endif
1072 VBoxC_SOURCES += src-client/DrvAudioRec.cpp
1073 endif # VBOX_WITH_AUDIO_RECORDING
1074 endif # VBOX_WITH_RECORDING
1075
1076 ifdef VBOX_WITH_OPENSSL_FIPS
1077 VBoxC_SDKS += VBoxOpenSsl
1078 endif
1079
1080 VBoxC_INCS = \
1081 include \
1082 $(VBoxC_0_OUTDIR) \
1083 $(VBOX_MAIN_APIWRAPPER_INCS) \
1084 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
1085 $(VBOX_MAIN_APIWRAPPER_DIR)/dtrace \
1086 $(VBOX_GRAPHICS_INCS)
1087 VBoxC_INCS.win = \
1088 $(VBoxCOM_0_OUTDIR) \
1089 .
1090
1091 VBoxC_LDFLAGS.darwin = \
1092 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxC.dylib \
1093 -exported_symbols_list $(VBoxC_0_OUTDIR)/VBoxC.def \
1094 -framework IOKit
1095 VBoxC_LDFLAGS.win += /MANIFEST \
1096 /DELAYLOAD:user32.dll
1097
1098
1099 VBoxC_LIBS += \
1100 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB)
1101 VBoxC_LIBS.win += \
1102 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/psapi.lib \
1103 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
1104 ifdef VBOX_WITH_NETFLT
1105 VBoxC_SDKS.win += VBoxWinNewDevLib
1106 VBoxC_LIBS.win += \
1107 $(PATH_STAGE_LIB)/WinNetConfigDll$(VBOX_SUFF_LIB) \
1108 $(PATH_STAGE_LIB)/VBoxDrvCfgDll$(VBOX_SUFF_LIB) \
1109 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
1110 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
1111 VBoxC_LDFLAGS.win += \
1112 /DELAYLOAD:newdev.dll \
1113 /DELAYLOAD:setupapi.dll \
1114 /DELAYLOAD:iphlpapi.dll
1115 endif
1116
1117 ifdef VBOX_WITH_DRAG_AND_DROP
1118 VBoxC_LIBS += $(PATH_STAGE_LIB)/VBoxDnDHostR3Lib$(VBOX_SUFF_LIB)
1119 endif
1120
1121 VBoxC_INTERMEDIATES = \
1122 $(VBOX_MAIN_PREREQS) \
1123 $(VBOX_XML_SCHEMADEFS_H) \
1124 $(VBOX_AUTOGEN_EVENT_H) \
1125 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_H) \
1126 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1127
1128 VBoxC_SOURCES += \
1129 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
1130 src-all/CryptoUtils.cpp \
1131 src-all/ConsoleSharedFolderImpl.cpp \
1132 src-all/DisplayPNGUtil.cpp \
1133 src-all/DisplayResampleImage.cpp \
1134 src-all/EventImpl.cpp \
1135 src-all/Global.cpp \
1136 src-all/GlobalStatusConversion.cpp \
1137 src-all/HashedPw.cpp \
1138 src-all/Logging.cpp \
1139 src-all/NvramStoreImpl.cpp \
1140 src-all/PCIDeviceAttachmentImpl.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/ResourceStoreImpl.cpp,) \
1171 src-client/SessionImpl.cpp \
1172 src-client/USBDeviceImpl.cpp \
1173 src-client/VBoxDriversRegister.cpp \
1174 src-client/VirtualBoxClientImpl.cpp \
1175 src-client/VMMDevInterface.cpp \
1176 xml/Settings.cpp \
1177 $(VBOX_AUTOGEN_EVENT_CPP) \
1178 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP) \
1179 $(VBOX_XML_SCHEMADEFS_CPP)
1180
1181 ifdef VBOX_WITH_MAIN_NLS
1182 VBoxC_SOURCES += \
1183 src-all/VirtualBoxTranslator.cpp \
1184 src-all/QMTranslatorImpl.cpp
1185 endif
1186
1187 # Experimental cloud support
1188 if defined(VBOX_WITH_CLOUD_NET)
1189 if defined(VBOX_WITH_LIBSSH)
1190 VBoxC_SDKS += VBoxLibSsh VBoxOpenSsl
1191 VBoxC_DEFS += VBOX_WITH_LIBSSH
1192 endif
1193 VBoxC_SOURCES += src-client/CloudGateway.cpp
1194
1195 VBoxC_SOURCES += \
1196 $(VBoxC_0_OUTDIR)/VBoxLibSshLazyLoad.asm
1197 VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxLibSshLazyLoad.asm
1198 $$(VBoxC_0_OUTDIR)/VBoxLibSshLazyLoad.asm: $(PATH_SUB_CURRENT)/src-all/VBoxLibSsh.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
1199 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxC,$(filter %.def, $^),$@)
1200 $(QUIET)$(RM) -f -- "$@"
1201 $(VBOX_DEF_2_LAZY_LOAD) --explicit-load-function --library VBoxLibSsh --output "$@" $(filter %.def, $^)
1202
1203 endif
1204
1205 # Audio bits.
1206 VBoxC_SOURCES += \
1207 src-client/AudioDriver.cpp \
1208 $(if $(VBOX_WITH_AUDIO_VRDE),src-client/DrvAudioVRDE.cpp,)
1209
1210 VBoxC_SOURCES.win = \
1211 src-client/win/dllmain.cpp \
1212 src-client/win/VBoxC.def \
1213 src-client/win/VBoxC.rc
1214 ifdef VBOX_WITH_GUEST_CONTROL
1215 VBoxC_SOURCES += \
1216 src-client/GuestSessionImplTasks.cpp \
1217 src-client/GuestCtrlPrivate.cpp \
1218 src-client/GuestDirectoryImpl.cpp \
1219 src-client/GuestFileImpl.cpp \
1220 src-client/GuestFsInfoImpl.cpp \
1221 src-client/GuestFsObjInfoImpl.cpp \
1222 src-client/GuestProcessImpl.cpp \
1223 src-client/GuestSessionImpl.cpp
1224 endif
1225 ifdef VBOX_WITH_DRAG_AND_DROP
1226 VBoxC_SOURCES += \
1227 src-client/GuestDnDPrivate.cpp \
1228 src-client/GuestDnDSourceImpl.cpp \
1229 src-client/GuestDnDTargetImpl.cpp \
1230 $(PATH_ROOT)/src/VBox/GuestHost/DragAndDrop/DnDUtils.cpp
1231 endif
1232 ifdef VBOX_WITH_XPCOM
1233 VBoxC_SOURCES += \
1234 src-client/xpcom/module.cpp
1235 endif
1236 ifdef VBOX_WITH_HGCM
1237 VBoxC_SOURCES += \
1238 src-client/HGCMObjects.cpp \
1239 src-client/HGCMThread.cpp \
1240 src-client/HGCM.cpp
1241 endif
1242 ifdef VBOX_WITH_USB
1243 VBoxC_SOURCES += \
1244 src-client/RemoteUSBBackend.cpp
1245 endif
1246 ifndef VBOX_WITH_VRDEAUTH_IN_VBOXSVC
1247 VBoxC_SOURCES += \
1248 src-all/AuthLibrary.cpp
1249 endif
1250
1251 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxC) # Sets VBoxC_0_OUTDIR
1252
1253 ifeq ($(KBUILD_TARGET),darwin)
1254 VBoxC_ORDERDEPS += $(VBoxC_0_OUTDIR)/VBoxC.def
1255 VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxC.def
1256 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxC_0_OUTDIR)/VBoxC.def)
1257 $(VBoxC_0_OUTDIR)/VBoxC.def:
1258 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1259 $(RM) -f $@
1260 $(APPEND) $@ _NSGetModule
1261 $(APPEND) $@ _VBoxDriversRegister
1262 endif
1263
1264 src-client/ConsoleImpl.cpp_DEFS = \
1265 $(if $(VBOX_WITH_OPENSSL_FIPS), VBOX_OPENSSL_FIPS,)
1266
1267
1268 src-client/win/VBoxC.rc_DEPS = $(VBoxC_0_OUTDIR)/VBoxC.rgs $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
1269 VBoxC_CLEAN.win += $(VBoxC_0_OUTDIR)/VBoxC.rgs
1270 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxC_0_OUTDIR)/VBoxC.rgs)
1271 $(VBoxC_0_OUTDIR)/VBoxC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1272 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1273 $(VBOX_XSLTPROC) \
1274 --stringparam Application VirtualBox \
1275 --stringparam Module VBoxC \
1276 -o $@ \
1277 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
1278 $(VBOX_XIDL_FILE)
1279
1280 ifdef VBOX_WITH_32_ON_64_MAIN_API
1281 #
1282 # 32-bit VBox API Client In-Process module.
1283 #
1284 # This is currently just a 32-bit version of VBoxC. It might be desirable to
1285 # split up VBoxC into a simple client and a VM client part later, in which
1286 # case this module will be a simple client.
1287 #
1288 # Note! One important thing is that the typelib for this DLL must be build
1289 # with the /env win32 switch and the VBoxC typelib with /env amd64, if
1290 # not they will overwrite each others typelib module entry.
1291 #
1292 DLLS += VBoxClient-x86
1293 VBoxClient-x86_TEMPLATE = VBoxMainComp-x86
1294 VBoxClient-x86_EXTENDS = VBoxC
1295 if defined(VBOX_WITH_PRECOMPILED_HEADERS) && "$(KBUILD_TARGET)" == "win" ## @todo fix inheritance (fixed in r3253)
1296 VBoxClient-x86_USES = vccprecomp
1297 VBoxClient-x86_PCH_HDR := $(PATH_SUB_CURRENT)/src-client/win/precomp_vcc.h
1298 endif
1299 VBoxClient-x86_SDKS = $(filter-out VBoxLibVpx,$(VBoxC_SDKS))
1300 VBoxClient-x86_DEFS = VBOX_COM_INPROC_API_CLIENT \
1301 $(filter-out VBOX_WITH_RECORDING VBOX_WITH_AUDIO_RECORDING \
1302 VBOX_WITH_LIBVPX,$(VBoxC_DEFS))
1303 VBoxClient-x86_INCS.win = \
1304 $(VBoxClient-x86_0_OUTDIR) \
1305 $(VBoxCOM-x86_0_OUTDIR) \
1306 $(VBoxC_INCS.win)
1307 VBoxClient-x86_SOURCES = \
1308 src-all/EventImpl.cpp \
1309 src-all/Global.cpp \
1310 src-all/GlobalStatusConversion.cpp \
1311 src-all/AutoCaller.cpp \
1312 src-all/ThreadTask.cpp \
1313 src-all/VirtualBoxBase.cpp \
1314 src-all/VirtualBoxErrorInfoImpl.cpp \
1315 src-client/ClientTokenHolder.cpp \
1316 src-client/SessionImpl.cpp \
1317 src-client/VirtualBoxClientImpl.cpp \
1318 $(VBOX_AUTOGEN_EVENT_CPP) \
1319 $(VBOX_AUTOGEN_STRINGIFY_ENUMS_CPP) \
1320 $(VBOX_XML_SCHEMADEFS_CPP)
1321 ifdef VBOX_WITH_MAIN_NLS
1322 VBoxClient-x86_SOURCES += \
1323 src-all/VirtualBoxTranslator.cpp \
1324 src-all/QMTranslatorImpl.cpp
1325 endif
1326 VBoxClient-x86_SOURCES.win = \
1327 src-client/win/dllmain.cpp \
1328 src-client/win/VBoxClient-x86.def \
1329 src-client/win/VBoxClient-x86.rc
1330 ifdef VBOX_WITH_XPCOM
1331 VBoxClient-x86_SOURCES += \
1332 src-client/xpcom/module.cpp
1333 endif
1334 VBoxClient-x86_LIBS = \
1335 $(PATH_STAGE_LIB)/VBoxAPIWrap-x86$(VBOX_SUFF_LIB)
1336 VBoxClient-x86_LIBS.win = $(NO_SUCH_VARIABLE)
1337 VBoxClient-x86_LIBS.win.x86 += \
1338 $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/delayimp.lib \
1339 $(PATH_SDK_$(VBOX_WINPSDK)_LIB.x86)/WbemUuid.Lib
1340 VBoxClient-x86_CLEAN.win += $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs
1341 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxClient-x86) # Sets VBoxClient-x86_0_OUTDIR
1342
1343 src-client/win/VBoxClient-x86.rc_DEPS = \
1344 $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs \
1345 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
1346
1347 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs)
1348 $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs: \
1349 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
1350 $(VBOX_XIDL_FILE) | $$(dir $$@)
1351 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1352 $(VBOX_XSLTPROC) \
1353 --stringparam Application VirtualBox \
1354 --stringparam Module VBoxC \
1355 -o $@ \
1356 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
1357 $(VBOX_XIDL_FILE)
1358 endif
1359
1360 #
1361 # The VBoxExtPackHelperApp.
1362 #
1363 ifdef VBOX_WITH_EXTPACK
1364 PROGRAMS += VBoxExtPackHelperApp
1365 VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot
1366 VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security
1367 VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows
1368 VBoxExtPackHelperApp_SOURCES = \
1369 src-helper-apps/VBoxExtPackHelperApp.cpp \
1370 src-all/ExtPackUtil.cpp
1371 VBoxExtPackHelperApp_SOURCES.win = \
1372 src-helper-apps/VBoxExtPackHelperApp.rc
1373 VBoxExtPackHelperApp_LIBS = \
1374 $(LIB_RUNTIME)
1375 endif # VBOX_WITH_EXTPACK
1376
1377
1378endif # !defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_EXTPACKS) (the ifndef is far above)
1379
1380
1381#
1382# VBoxCOM - COM Abstraction Layer library
1383#
1384ifndef VBOX_ONLY_SDK
1385 LIBRARIES += VBoxCOM
1386endif
1387VBoxCOM_TEMPLATE = VBoxMainLib
1388VBoxCOM_INTERMEDIATES = $(VBOX_MAIN_PREREQS) \
1389 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1390VBoxCOM_SOURCES = \
1391 glue/com.cpp \
1392 glue/VBoxLogRelCreate.cpp \
1393 glue/GetVBoxUserHomeDirectory.cpp \
1394 glue/initterm.cpp \
1395 glue/string.cpp \
1396 glue/string-base64.cpp \
1397 glue/AutoLock.cpp \
1398 glue/EventQueue.cpp \
1399 glue/NativeEventQueue.cpp \
1400 glue/ErrorInfo.cpp \
1401 glue/errorprint.cpp
1402VBoxCOM_INCS += $(VBOX_MAIN_APIWRAPPER_INCS) \
1403 include
1404ifeq ($(KBUILD_TARGET),win)
1405 ifdef VBOX_WITH_MIDL_PROXY_STUB
1406 VBoxCOM_DEFS.win = VBOX_WITH_AUTO_COM_REG_UPDATE
1407 endif
1408 ifdef VBOX_WITH_SDS
1409 VBoxCOM_DEFS.win += VBOX_WITH_SDS
1410 endif
1411 VBoxCOM_DEFS.x86 = _WIN32_WINNT=0x0500
1412 VBoxCOM_DEFS.amd64 = _WIN32_WINNT=0x0510
1413 VBoxCOM_SOURCES += \
1414 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c
1415 VBoxCOM_CLEAN = \
1416 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1417 $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c \
1418 $(VBoxCOM_0_OUTDIR)/dlldata.c \
1419 $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
1420 $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
1421 VBoxCOM_CLEAN += \
1422 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c \
1423 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c \
1424 $(VBoxCOM_0_OUTDIR)/legacy/dlldata.c \
1425 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.h \
1426 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.tlb
1427 VBoxCOM_BLDDIRS = $(VBoxCOM_0_OUTDIR)/legacy/
1428else # !win
1429 VBoxCOM_SOURCES += \
1430 $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c \
1431 glue/xpcom/helpers.cpp
1432endif # !win
1433
1434ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1435 glue/VBoxLogRelCreate.cpp_DEFS = KBUILD_TYPE="$(KBUILD_TYPE)"
1436else
1437 glue/VBoxLogRelCreate.cpp_DEFS = KBUILD_TYPE=\"$(KBUILD_TYPE)\"
1438endif
1439
1440# A couple of tricks to define VBoxCOM_0_OUTDIR for SDK builds and mkdir rule.
1441$(call KB_FN_DO_PASS0_ON_TARGET,VBoxCOM)
1442BLDDIRS += $(VBoxCOM_0_OUTDIR)
1443
1444
1445ifndef VBOX_ONLY_SDK
1446
1447 # 32-bit version of VBoxCOM.
1448 if defined(VBOX_WITH_32_ON_64_MAIN_API) && !defined(VBOX_ONLY_EXTPACKS)
1449 LIBRARIES += VBoxCOM-x86
1450 VBoxCOM-x86_TEMPLATE = VBoxMainLib-x86
1451 VBoxCOM-x86_EXTENDS = VBoxCOM
1452 ifeq ($(KBUILD_TARGET),win)
1453 VBoxCOM-x86_CLEAN = \
1454 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1455 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c \
1456 $(VBoxCOM-x86_0_OUTDIR)/dlldata.c \
1457 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h \
1458 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
1459 endif
1460 endif
1461
1462 # -MD version for the GUI in -MDd builds.
1463 ifeq ($(KBUILD_TARGET).$(VBOX_VCC_CRT_TYPE),win.d)
1464 ifndef VBOX_ONLY_EXTPACKS
1465 LIBRARIES += VBoxCOM-GUI
1466 ifndef VBOX_WITH_QT6
1467 USES += qt5
1468 else
1469 USES += qt6
1470 endif
1471 VBoxCOM-GUI_TEMPLATE = $(if-expr defined(VBOX_WITH_HARDENING),VBoxQtGuiDll,VBoxQtGuiExe)
1472 VBoxCOM-GUI_EXTENDS = VBoxCOM
1473 endif
1474 endif
1475
1476 # define qt5 tools for translation even if VBOX_ONLY_EXTPACKS is enabled
1477 ifdef VBOX_WITH_NLS
1478 ifndef VBOX_WITH_QT6
1479 USES += qt5
1480 else
1481 USES += qt6
1482 endif
1483 endif
1484
1485endif # !VBOX_ONLY_SDK
1486
1487
1488#
1489# Installs com related thing(s) to bin.
1490#
1491INSTALLS.win += VBoxMain-com-inst
1492VBoxMain-com-inst_INST = $(INST_BIN)
1493VBoxMain-com-inst_MODE = a+r,u+w
1494VBoxMain-com-inst_SOURCES = src-all/win/comregister.cmd
1495
1496
1497if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "linux" && !defined(VBOX_ONLY_EXTPACKS)
1498 #
1499 # Installs linux/hardening related things to components.
1500 #
1501 INSTALLS.linux += VBoxMain-hardening-inst
1502 VBoxMain-hardening-inst_INST = $(INST_BIN)components/
1503 VBoxMain-hardening-inst_SYMLINKS = \
1504 VBoxDDU.so=>../VBoxDDU.so \
1505 VBoxRT.so=>../VBoxRT.so \
1506 VBoxVMM.so=>../VBoxVMM.so \
1507 VBoxXPCOM.so=>../VBoxXPCOM.so
1508endif
1509
1510
1511if defined(VBOX_WITH_MIDL_PROXY_STUB) && "$(KBUILD_TARGET)" == "win" && !defined(VBOX_ONLY_EXTPACKS) && !defined(VBOX_ONLY_SDK)
1512 #
1513 # Experimental COM proxy + stub DLL w/ automatic registration updating.
1514 #
1515 # The Legacy stub is for older 64-bit windows versions (pre Windows 7) as we
1516 # were having various problems on windows server 2003 and 2008 with the code
1517 # MIDL generated. Also, in windows 7 there are some potentially interesting
1518 # changes in the generated code where it uses new helpers from OLE32.
1519 #
1520 DLLS += VBoxProxyStub
1521 VBoxProxyStub_TEMPLATE = VBoxMainComp
1522 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1523 VBoxProxyStub_DEFS := REGISTER_PROXY_DLL PROXY_CLSID_IS=$(quote $(VBOX_MIDL_PROXY_CLSID_IS))
1524 else
1525 VBoxProxyStub_DEFS := REGISTER_PROXY_DLL PROXY_CLSID_IS="$(VBOX_MIDL_PROXY_CLSID_IS)"
1526 endif
1527 ifdef VBOX_WITH_SDS
1528 VBoxProxyStub_DEFS += VBOX_WITH_SDS
1529 endif
1530 ifdef VBOX_WITH_SDS_CLIENT_WATCHER
1531 VBoxProxyStub_DEFS += VBOX_WITH_SDS_CLIENT_WATCHER,)
1532 endif
1533 VBoxProxyStub_DEFS.win.x86 = WIN32
1534 VBoxProxyStub_SDKS = VBoxNtDll
1535 VBoxProxyStub_DEFPATH = $(VBoxCOM_0_OUTDIR)/# Hack to workaround drive letter in $(VBoxCOM_0_OUTDIR)/ for CFLAGS hack below.
1536 VBoxProxyStub_INCS = $(VBoxCOM_0_OUTDIR)/
1537 VBoxProxyStub_SOURCES := \
1538 VirtualBox_p.c \
1539 VirtualBox_i.c \
1540 $(PATH_SUB_CURRENT)/src-all/win/VBoxProxyStub.def \
1541 $(PATH_SUB_CURRENT)/src-all/win/VBoxProxyStub.rc \
1542 $(PATH_SUB_CURRENT)/src-all/win/VBoxProxyStub.c
1543 src-all/win/VBoxProxyStub.rc_DEPS = $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
1544 VBoxProxyStub_VirtualBox_p.c_CFLAGS.x86 = /Gz # Workaround for incorrect ObjectStublessClient* prototypes in SDK v7.1.
1545
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
1559 ifdef VBOX_WITH_32_ON_64_MAIN_API
1560 DLLS += VBoxProxyStub-x86
1561 VBoxProxyStub-x86_TEMPLATE = VBoxMainComp-x86
1562 VBoxProxyStub-x86_SDKS = VBoxNtDll
1563 VBoxProxyStub-x86_DEFS = $(VBoxProxyStub_DEFS) VBOX_PROXY_STUB_32_ON_64 WIN32
1564 VBoxProxyStub-x86_INCS = $(VBoxCOM-x86_0_OUTDIR)/
1565 VBoxProxyStub-x86_SOURCES = \
1566 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c \
1567 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1568 src-all/win/VBoxProxyStub.c \
1569 src-all/win/VBoxProxyStub-x86.rc \
1570 src-all/win/VBoxProxyStub.def
1571 src-all/win/VBoxProxyStub-x86.rc_DEPS = $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
1572 endif
1573endif
1574
1575
1576ifdef VBOX_WITH_MAIN_NLS
1577 #
1578 # NLS stuff.
1579 #
1580 include $(PATH_SUB_CURRENT)/nls/ApprovedLanguages.kmk
1581
1582 PROGRAMS += VirtualBoxAPI
1583 VirtualBoxAPI_TEMPLATE = VBoxNLS
1584 VirtualBoxAPI_QT_TRANSLATIONS = $(addsuffix .ts,$(addprefix $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_,$(VBOX_APPROVED_MAIN_LANGUAGES)))
1585 VirtualBoxAPI_VBOX_ALL_NLS_SOURCES = $(wildcard \
1586 $(VBOX_PATH_MAIN_SRC)/include/*.h \
1587 $(VBOX_PATH_MAIN_SRC)/src-all/*.cpp \
1588 $(VBOX_PATH_MAIN_SRC)/src-all/*.h \
1589 $(VBOX_PATH_MAIN_SRC)/src-server/*.cpp \
1590 $(VBOX_PATH_MAIN_SRC)/src-server/*.h \
1591 $(VBOX_PATH_MAIN_SRC)/src-client/*.cpp \
1592 $(VBOX_PATH_MAIN_SRC)/src-client/*.h )
1593
1594 updatenls:: makeallnls $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_en.ts
1595
1596 makeallnls:: $(VirtualBoxAPI_VBOX_ALL_NLS_SOURCES)
1597 $(call MSG_L1,lupdate all languages (nls/*.ts))
1598 $(QUIET)$(TOOL_QT5_LUPDATE) \
1599 $^ \
1600 -ts \
1601 $(filter-out nls/VirtualBoxAPI_en.ts, $(VirtualBoxAPI_QT_TRANSLATIONS)) \
1602 $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_xx_YY.ts
1603
1604 #fake-main-nls:
1605 # $(foreach file, $(VirtualBoxAPI_QT_TRANSLATIONS) \
1606 # ,$(NLTAB)$(SED) -i \
1607 # -e '/<source>.*<\/source>/h' \
1608 # -e '/<source>.*<\/source>/p' \
1609 # -e '/<translation type="unfinished"><\/translation>/{' \
1610 # -e 'x' \
1611 # -e 's/<source>\(.*\)<\/source>/<translation type="unfinished">$(notdir $(file)): \1<\/translation>/' \
1612 # -e '}' \
1613 # $(file) )
1614
1615
1616 # Create the English translation file. This is something special cause it will
1617 # contain the plural forms only.
1618 $(VBOX_PATH_MAIN_SRC)/nls/VirtualBoxAPI_en.ts: $(VirtualBoxAPI_VBOX_ALL_NLS_SOURCES)
1619 $(call MSG_L1,lupdate $@)
1620 $(QUIET)$(TOOL_QT5_LUPDATE) \
1621 $^ \
1622 -ts \
1623 "$@"
1624 $(QUIET)$(SED) -n -i \
1625 -e '/<context>/,/<\/context>/!p' \
1626 -e '/<context>/h' \
1627 -e '/<name>/H' \
1628 -e '/<message numerus="yes">/,/<\/message>/H' \
1629 -e '/<\/context>/{H;x;/<message/p}' \
1630 "$@"
1631
1632endif # VBOX_WITH_MAIN_NLS
1633
1634
1635# generate rules
1636include $(FILE_KBUILD_SUB_FOOTER)
1637
1638
1639
1640#
1641# Additions rules.
1642#
1643
1644## @todo this hack ain't cutting it any longer. (the file name is abspath'ed since ages now.)
1645glue/xpcom/helpers.cpp: $(VBOX_IDL_TYPELIB.XPCOM)
1646
1647$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_FILE.XPCOM),$(PATH_OUT)/VBOX_IDL_FILE.XPCOM.vbox-dep)
1648$(VBOX_IDL_FILE.XPCOM): $(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1649 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_FILE.XPCOM.vbox-dep)
1650 $(call MSG_TOOL,xsltproc,VBoxSVC,$(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl,$@)
1651 $(QUIET)$(VBOX_XSLTPROC) -o $@ $(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl $(VBOX_XIDL_FILE)
1652
1653$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_TYPELIB.XPCOM),$(PATH_OUT)/VBOX_IDL_TYPELIB.XPCOM.vbox-dep)
1654$(VBOX_IDL_TYPELIB.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1655 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_TYPELIB.XPCOM.vbox-dep)
1656 $(call MSG_TOOL,xpidl,VBoxSVC,$(VBOX_IDL_FILE.XPCOM),$@)
1657 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m typelib -I $(VBOX_PATH_XPCOM_IDL) -e $@ $(VBOX_IDL_FILE.XPCOM)
1658 $(CHMOD) 0644 $@
1659## @todo ^^^^^^^^^^^^ fix horrible hack
1660
1661$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_HEADER.XPCOM),$(PATH_OUT)/VBOX_IDL_HEADER.XPCOM.vbox-dep)
1662$(VBOX_IDL_HEADER.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1663 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_HEADER.XPCOM.vbox-dep)
1664 $(call MSG_TOOL,xpidl,VBoxSVC,$(VBOX_IDL_FILE.XPCOM),$@)
1665 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m header -I $(VBOX_PATH_XPCOM_IDL) -e $@ $(VBOX_IDL_FILE.XPCOM)
1666
1667$(call KB_FN_AUTO_CMD_DEPS_EX,$(VBOX_IDL_FILE.MSCOM),$(PATH_OUT)/VBOX_IDL_FILE.MSCOM.vbox-dep)
1668$(VBOX_IDL_FILE.MSCOM): $(VBOX_PATH_MAIN_SRC)/idl/midl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1669 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS_EX,$(PATH_OUT)/VBOX_IDL_FILE.MSCOM.vbox-dep)
1670 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1671 $(QUIET)$(VBOX_XSLTPROC) -o $@ \
1672 $(if $(VBOX_WITH_MIDL_PROXY_STUB),-stringparam g_fGenProxy yes,) \
1673 $(if $(VBOX_WITH_SDS),-stringparam g_fVBoxWithSDS yes,) \
1674 $(VBOX_PATH_MAIN_SRC)/idl/midl.xsl $(VBOX_XIDL_FILE)
1675
1676
1677# Aliases for testing purposes.
1678ifdef VBOX_WITH_XPCOM
1679 testidl: $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c
1680 testidlhdr: $(VBOX_IDL_HEADER.XPCOM)
1681else
1682 testidl: $(VBOX_IDL_FILE.MSCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1683 $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c,)
1684endif
1685
1686
1687$(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c: $(VBOX_PATH_MAIN_SRC)/idl/xpidl_iid.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1688 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1689 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
1690
1691if "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_HOST) && !defined(VBOX_ONLY_SDK_IN_VM))
1692
1693 # Note! Because we've got a different proxy stub DLL for pre windows 7 64-bit hosts, we target windows 7 for AMD64.
1694 # The output is different and hopefully more efficient, at least memory wise (using more helpers in OLE32).
1695 # Note! We're checking for win.amd64 below when setting the target because of the SDK build which happens on linux.amd64
1696 # but with a 32-bit Wine.
1697 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c)
1698 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1699 $(if $(VBOX_WITH_MIDL_PROXY_STUB), + $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM_0_OUTDIR)/dlldata.c,) \
1700 + $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
1701 + $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1702 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1703 $(VBOX_MIDL_REDIRECT) $(VBOX_WIN_MIDL) /nologo /W4 \
1704 /env $(if-expr "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.amd64" ,amd64,win32) \
1705 /robust /protocol all /target $(if-expr defined(VBOX_WITH_MIDL_PROXY_STUB),NT61,NT51) \
1706 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM_0_OUTDIR)) \
1707 /cpp_cmd $(VBOX_MIDL_CPP_CMD) \
1708 $(foreachfile dir,$(SDK_$(VBOX_WINPSDK)_INCS),/I $(call VBOX_FN_MAKE_WIN_PATH,$(dir))) \
1709 /I idl \
1710 $(call VBOX_FN_MAKE_WIN_PATH,$(VBOX_IDL_FILE.MSCOM))
1711 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/VirtualBox.h)
1712 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c)
1713 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/VirtualBox_p.c)
1714
1715 if defined(VBOX_WITH_MIDL_PROXY_STUB)
1716 # -Windows Server 2003 AMD64 SP1 does not like the result when using '/protocol all' and '/target NT51'.
1717 # -Vista AMD64 SP1 and Windows Server 2008 AMD64 seems to have some objections as well, but it seemed
1718 # that using an older MIDL compiler (v7.00.0499 instead of v7.00.0555) helps. But the W2K3 fix also works.
1719 # To avoid 32-bit vs. 64-bit differences, we do the same for 32-bit windows versions.
1720 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c)
1721 $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c \
1722 + $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c \
1723 + $(VBoxCOM_0_OUTDIR)/legacy/dlldata.c \
1724 + $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.h \
1725 + $(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1726 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1727 $(VBOX_MIDL_REDIRECT) $(VBOX_WIN_MIDL) /nologo /W4 \
1728 $(if-expr "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.amd64" \
1729 ,/env amd64 /x64 /target NT50 /robust \
1730 ,/env win32 /target NT51 /robust /protocol all ) \
1731 /out $(call VBOX_FN_MAKE_WIN_PATH,$(dir $@)) \
1732 /cpp_cmd $(VBOX_MIDL_CPP_CMD) \
1733 $(foreachfile dir,$(SDK_$(VBOX_WINPSDK)_INCS),/I $(call VBOX_FN_MAKE_WIN_PATH,$(dir))) \
1734 /I idl \
1735 $(call VBOX_FN_MAKE_WIN_PATH,$(VBOX_IDL_FILE.MSCOM))
1736 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox.h)
1737 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_i.c)
1738 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM_0_OUTDIR)/legacy/VirtualBox_p.c)
1739 endif
1740
1741 if defined(VBOX_WITH_32_ON_64_MAIN_API) && !defined(VBOX_ONLY_EXTPACKS)
1742 # The XP targetted 32-bit proxy stub works with all versions of windows (the
1743 # issues leading to the VBoxProxyStubLegacy.dll are only on 64-bit windows).
1744 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c)
1745 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1746 $(if $(VBOX_WITH_MIDL_PROXY_STUB), + $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM-x86_0_OUTDIR)/dlldata.c,) \
1747 + $(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h \
1748 + $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1749 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1750 $(VBOX_MIDL_REDIRECT_X86) $(VBOX_WIN_MIDL) /nologo /W4 \
1751 /env win32 /target NT51 /robust /protocol all \
1752 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)) \
1753 /tlb $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb) \
1754 /cpp_cmd $(VBOX_MIDL_CPP_CMD_X86) \
1755 $(foreachfile dir,$(SDK_$(VBOX_WINPSDK)_INCS),/I $(call VBOX_FN_MAKE_WIN_PATH,$(dir))) \
1756 /I idl \
1757 $(call VBOX_FN_MAKE_WIN_PATH,$(VBOX_IDL_FILE.MSCOM))
1758 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h)
1759 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c)
1760 $(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c)
1761 endif
1762
1763endif # "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_HOST) && !defined(VBOX_ONLY_SDK_IN_VM))
1764
1765#
1766# Translation stuff
1767#
1768VBoxSVC_VBOX_HEADERS = \
1769 include/collection.h \
1770 include/MachineImpl.h
1771VBoxSVC_VBOX_TRANSLATIONS = \
1772 nls/VBoxSVC_de.ts
1773
1774VBoxC_VBOX_HEADERS = \
1775 include/ConsoleImpl.h
1776
1777VBoxC_VBOX_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1778VBoxC_VBOX_HEADERS += $(VBOX_MAIN_APIWRAPPER_INCS)
1779
1780VBoxC_VBOX_TRANSLATIONS = \
1781 nls/VBoxC_de.ts
1782
1783ifdef VBOX_WITH_JMSCOM
1784
1785 #
1786 # Java glue JAR files
1787 #
1788 VBOX_JMSCOM_JAR = $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
1789 VBOX_JMSCOM_TARGET := $(PATH_TARGET)/vboxjmscom-gen
1790 VBOX_JMSCOM_GEN = $(VBOX_JMSCOM_TARGET)/jmscomgen
1791 VBOX_JMSCOM_JDEST := $(VBOX_JMSCOM_TARGET)/jdest
1792 VBOX_GLUE_XSLT_DIR := $(PATH_ROOT)/src/VBox/Main/glue
1793 VBOX_JACOB_DIR := $(PATH_ROOT)/src/libs/jacob-1.17
1794
1795 INSTALLS += VBoxJMscom-inst-jar
1796 VBoxJMscom-inst-jar_INST = $(INST_SDK)bindings/mscom/java/
1797 VBoxJMscom-inst-jar_MODE = a+r,u+w
1798 VBoxJMscom-inst-jar_SOURCES = \
1799 $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
1800 VBoxJMscom-inst-jar_CLEAN = \
1801 $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar \
1802 $(VBOX_JMSCOM_GEN)/jmscomglue.list \
1803 $(wildcard \
1804 $(VBOX_JMSCOM_GEN)/java/*.java \
1805 $(VBOX_JMSCOM_JDEST)/*.class \
1806 $(VBOX_JMSCOM_JDEST)/*/*.class \
1807 $(VBOX_JMSCOM_JDEST)/*/*/*.class \
1808 $(VBOX_JMSCOM_JDEST)/*/*/*/*.class \
1809 )
1810 VBoxJMscom-inst-jar_BLDDIRS += $(VBOX_JMSCOM_GEN)/java
1811 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxJMscom-inst-jar) # Sets VBoxJMscom-inst-jar_0_OUTDIR
1812
1813 $(call KB_FN_AUTO_CMD_DEPS,$(VBOX_JMSCOM_GEN)/jmscomglue.list)
1814 $(VBOX_JMSCOM_GEN)/jmscomglue.list: \
1815 $(VBOX_XIDL_FILE) \
1816 $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl \
1817 $(VBOX_FILESPLIT) \
1818 | $(VBOX_JMSCOM_GEN)/java/
1819 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1820 $(call MSG_L1,Generating Java MSCOM glue files from XIDL)
1821 $(QUIET)$(RM) -f $(wildcard $(VBOX_JMSCOM_GEN)/java/*.java)
1822 $(QUIET)$(VBOX_XSLTPROC) \
1823 --stringparam filelistonly "" \
1824 --stringparam G_vboxApiSuffix $(VBOX_API_SUFFIX) \
1825 --stringparam G_vboxGlueStyle mscom \
1826 --stringparam G_vboxDirPrefix "" \
1827 -o $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl $(VBOX_XIDL_FILE)
1828 $(QUIET)$(VBOX_FILESPLIT) $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_JMSCOM_GEN)/java
1829 $(QUIET)echo $(VBOX_JMSCOM_GEN)/java/*.java > $@
1830
1831 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar)
1832 $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar: $(VBOX_JMSCOM_GEN)/jmscomglue.list | $$(dir $$@)
1833 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1834 $(call MSG_TOOL,javac,$(notdir $@),jmscomglue.list,)
1835 $(QUIET)$(RM) -Rf $(VBOX_JMSCOM_JDEST)
1836 $(QUIET)$(MKDIR) -p $(VBOX_JMSCOM_JDEST)
1837 $(call MSG_TOOL,javac,$(notdir $@),...,)
1838 $(QUIET)$(VBOX_JAVAC) $(VBOX_JAVAC_OPTS) @$(VBOX_JMSCOM_GEN)/jmscomglue.list \
1839 -d $(VBOX_JMSCOM_JDEST) -classpath "$(VBOX_JMSCOM_JDEST)$(VBOX_SEP)$(VBOX_JACOB_DIR)/jacob.jar"
1840 $(call MSG_LINK,$(notdir $@),$@)
1841 $(QUIET)$(VBOX_JAR) cf $@ -C $(VBOX_JMSCOM_JDEST) .
1842
1843 ## @todo compile TestVBox.java (see below) to have sanity checking
1844endif # VBOX_WITH_JMSCOM
1845
1846#
1847# Install Java glue sample code.
1848#
1849INSTALLS += javagluesample
1850javagluesample_INST = $(INST_SDK)bindings/glue/java/
1851javagluesample_MODE = a+r,u+w
1852javagluesample_SOURCES = \
1853 $(VBOX_PATH_MAIN_SRC)/glue/tests/TestVBox.java=>TestVBox.java \
1854 $(VBOX_PATH_MAIN_SRC)/glue/tests/Makefile=>Makefile
1855
1856#
1857# Rules associated with VBoxAPIWrap (in typical invocation order).
1858# We keep them down here to simplify the use of VBoxAPIWrap_0_OUTDIR.
1859#
1860
1861# Generate a make include file which lists the wrapper header and source files.
1862$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_VBOX_KMK_FILE).ts)
1863$(VBoxAPIWrap_VBOX_KMK_FILE).ts \
1864+| $(VBoxAPIWrap_VBOX_KMK_FILE): \
1865 $(VBOX_XIDL_FILE) \
1866 $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl \
1867 $(VBOX_PATH_MAIN_SRC)/Makefile.kmk
1868 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1869 $(call MSG_GENERATE,,$(VBoxAPIWrap_VBOX_KMK_FILE))
1870 $(QUIET)$(RM) -f $@
1871 $(QUIET)$(MKDIR) -p $(@D)
1872 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1873 $(if $(VBOX_WITH_SDS),-stringparam g_fVBoxWithSDS yes,) \
1874 -o $@ $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl $(VBOX_XIDL_FILE)
1875 $(QUIET)$(CP) --changed -fv $@ $(VBoxAPIWrap_VBOX_KMK_FILE)
1876
1877# Generate the header files for the wrappers.
1878$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers)
1879$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1880+| $(VBOX_MAIN_APIWRAPPER_GEN_HDRS): \
1881 $(VBOX_XIDL_FILE) \
1882 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1883 $(VBoxAPIWrap_VBOX_XSLT) \
1884 $(VBOX_FILESPLIT) \
1885 | $$(dir $$@)
1886 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1887 $(call MSG_L1,Generating C++ Server API wrapper header files from XIDL)
1888 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_HDRS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h))
1889 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1890 --stringparam generating "headers" \
1891 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1892 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1893
1894# Generate the DTrace probes for the wrappers and combine them with handcoded probes.
1895$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts)
1896$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1897+| $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d: \
1898 $(VBOX_XIDL_FILE) \
1899 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1900 $(VBoxAPIWrap_VBOX_XSLT) \
1901 $(VBOX_FILESPLIT) \
1902 | $$(dir $$@)
1903 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1904 $(call MSG_L1,Generating DTrace Provider for the VBox API (from XIDL))
1905 $(QUIET)$(RM) -f -- "$@" "$@.tmp"
1906 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1907 --stringparam generating "dtrace-probes" \
1908 -o "$@" $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1909 $(QUIET)$(SED) -e '' -o "$@.tmp" \
1910 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-start$(if-expr "$(VBOX_HOST_DTRACE_VERSION)" == "dtrace: Sun D 1.6.2",-alternative,).d" \
1911 "$@" \
1912 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-end$(if-expr "$(VBOX_HOST_DTRACE_VERSION)" == "dtrace: Sun D 1.6.2",-alternative,).d"
1913 $(QUIET)$(MV) -- "$@.tmp" "$@"
1914 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d"
1915
1916# Generate the wrapper source files - split in two due to long processing time
1917$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even)
1918$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even \
1919+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_EVEN): \
1920 $(VBOX_XIDL_FILE) \
1921 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1922 $(VBoxAPIWrap_VBOX_XSLT) \
1923 $(VBOX_FILESPLIT) \
1924 | $$(dir $$@)
1925 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1926 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 1)
1927 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1928 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1929 --stringparam generating "sources" \
1930 --param reminder 0 \
1931 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1932 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1933
1934$(call KB_FN_AUTO_CMD_DEPS,$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd)
1935$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1936+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_ODD): \
1937 $(VBOX_XIDL_FILE) \
1938 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1939 $(VBoxAPIWrap_VBOX_XSLT) \
1940 $(VBOX_FILESPLIT) \
1941 | $$(dir $$@)
1942 $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
1943 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 2)
1944 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1945 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1946 --stringparam generating "sources" \
1947 --param reminder 1 \
1948 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
1949 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1950
1951testapiwrappers:: \
1952 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1953 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1954 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1955 $(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