VirtualBox

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

Last change on this file since 73768 was 73716, checked in by vboxsync, 6 years ago

Main/CloudProviderManager+CloudProvider+CloudProfile: Introduce CloudProfile as separate interface, and do a big cleanup. Adding synchronization and incomplete support for moving to an extension pack. Updated VBoxManage to list providers and touched up the GUI code slightly to deal with the changed interfaces.

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

© 2023 Oracle
ContactPrivacy policyTerms of Use