VirtualBox

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

Last change on this file since 55236 was 55182, checked in by vboxsync, 10 years ago

Main,FE/VBoxManage: Support exporting machines as appliances which have encrypted disks. Because the OVF standard doesn't support encrypted disks so far we always decrypt exported images which requires the password before starting the export proess

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 43.1 KB
Line 
1# $Id: Makefile.kmk 55182 2015-04-10 14:26:59Z vboxsync $
2## @file
3# Makefile for the VBox Main module.
4#
5
6#
7# Copyright (C) 2004-2014 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
36
37
38#
39# Targets and globals (bit of a mess...)
40#
41VBOX_PATH_MAIN_SRC := $(PATH_SUB_CURRENT)
42
43ifdef VBOX_ONLY_SDK
44 # I'm Evil! Dr. Evil.
45 VBoxCOM_0_OUTDIR = $(PATH_TARGET)/VBoxCOM
46 BLDDIRS += $(VBoxCOM_0_OUTDIR) $(PATH_STAGE_BIN)/components
47 include $(KBUILD_PATH)/tools/$(VBOX_VCC_TOOL).kmk # For the idl /cpp statement.
48 include $(KBUILD_PATH)/sdks/$(VBOX_WINPSDK).kmk
49endif # !VBOX_ONLY_SDK
50
51
52# Construct VBOX_MAIN_DEFS
53## @todo eliminate or expand VBOX_MAIN_DEFS.
54VBOX_MAIN_DEFS =
55ifneq ($(KBUILD_TARGET),win)
56 ifndef VBOX_WITH_XPCOM
57 $(error "VBox: VBOX_WITH_XPCOM isn't defined")
58 endif
59 VBOX_MAIN_DEFS += VBOX_WITH_GENERIC_SESSION_WATCHER
60endif
61VBOX_MAIN_DEFS += \
62 $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,) \
63 $(if $(VBOX_WITH_RAW_RING1),VBOX_WITH_RAW_RING1,) \
64 $(if $(VBOX_WITH_VMSVGA),VBOX_WITH_VMSVGA,) \
65 $(if $(VBOX_WITH_VMSVGA3D),VBOX_WITH_VMSVGA3D,) \
66 $(if $(VBOX_WITH_NETFLT),VBOX_WITH_NETFLT,) \
67 $(if $(VBOX_WITH_COPYTOGUEST),VBOX_WITH_COPYTOGUEST,) \
68 $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
69 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
70 $(if $(VBOX_WITH_CROGL),VBOX_WITH_CROGL,) \
71 $(if $(VBOX_WITH_CRHGSMI),VBOX_WITH_CRHGSMI,) \
72 $(if $(VBOX_WITH_GUEST_PROPS),VBOX_WITH_GUEST_PROPS,) \
73 $(if $(VBOX_WITH_GUEST_PROPS_RDONLY_GUEST),VBOX_WITH_GUEST_PROPS_RDONLY_GUEST,) \
74 $(if $(VBOX_WITH_GUEST_CONTROL),VBOX_WITH_GUEST_CONTROL,) \
75 $(if $(VBOX_WITH_USB_CARDREADER),VBOX_WITH_USB_CARDREADER,) \
76 $(if $(VBOX_WITH_USB_CARDREADER_TEST),VBOX_WITH_USB_CARDREADER_TEST,) \
77 $(if $(VBOX_WITH_HOSTNETIF_API),VBOX_WITH_HOSTNETIF_API,) \
78
79# Unconditionally enable the new semaphore key generation code
80VBOX_MAIN_DEFS += VBOX_WITH_NEW_SYS_V_KEYGEN
81
82VBOX_IDL_FILE.MSCOM = $(VBOX_PATH_SDK)/bindings/mscom/idl/VirtualBox.idl
83VBOX_IDL_FILE.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/idl/VirtualBox_XPCOM.idl
84
85VBOX_IDL_TYPELIB.XPCOM = $(PATH_STAGE_BIN)/components/VirtualBox_XPCOM.xpt
86VBOX_IDL_HEADER.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
87
88# The MS COM specific stuff.
89if defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" == "win"
90 OTHERS += \
91 $(VBOX_IDL_FILE.MSCOM)
92 OTHER_CLEAN += \
93 $(VBOX_IDL_FILE.MSCOM)
94
95 INSTALLS += VBox-mscom-bindings-include VBox-mscom-bindings-lib
96 VBox-mscom-bindings-include_INST = $(INST_SDK)bindings/mscom/include/
97 VBox-mscom-bindings-include_MODE = a+r,u+w
98 VBox-mscom-bindings-include_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox.h
99 VBox-mscom-bindings-include_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox.h
100 VBox-mscom-bindings-lib_INST = $(INST_SDK)bindings/mscom/lib/
101 VBox-mscom-bindings-lib_MODE = a+r,u+w
102 VBox-mscom-bindings-lib_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
103 $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
104 VBox-mscom-bindings-lib_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
105 $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
106
107 BLDDIRS += $(VBOX_PATH_SDK)/bindings/mscom/idl
108endif
109
110# The XPCOM specific stuff.
111# if defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" != "win" -- does not build on Windows
112if "$(KBUILD_TARGET)" != "win"
113 OTHERS += $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
114 OTHER_CLEAN += \
115 $(VBOX_IDL_FILE.XPCOM) \
116 $(VBOX_IDL_HEADER.XPCOM) \
117 $(VBOX_IDL_TYPELIB.XPCOM)
118
119 INSTALLS += VBox-xpcom-bindings-lib
120 VBox-xpcom-bindings-lib_INST = $(INST_SDK)bindings/xpcom/lib/
121 VBox-xpcom-bindings-lib_MODE = a+r,u+w
122 VBox-xpcom-bindings-lib_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c=>VirtualBox_i.c
123 VBox-xpcom-bindings-lib_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c
124
125 VBOX_MAIN_PREREQS += $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
126 BLDDIRS += \
127 $(VBOX_PATH_SDK)/bindings/xpcom/idl \
128 $(VBOX_PATH_SDK)/bindings/xpcom/include
129endif # xpcom
130
131
132#
133# Strip documentation from source XIDL so that we don't get a full
134# recompile every time a comma in the documentation is changed.
135#
136$(VBOX_XIDL_FILE).ts +| $(VBOX_XIDL_FILE): \
137 $(VBOX_XIDL_FILE_SRC) \
138 $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl \
139 | $$(dir $$@)
140# $(CP) -fv $< $(VBOX_XIDL_FILE).ts
141 $(QUIET)$(VBOX_XSLTPROC) -o $(VBOX_XIDL_FILE).ts $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl $<
142 $(QUIET)$(CP) --changed -fv $(VBOX_XIDL_FILE).ts $(VBOX_XIDL_FILE)
143
144OTHER_CLEAN += $(VBOX_XIDL_FILE) $(VBOX_XIDL_FILE).ts
145
146#
147# The Main API documentation
148#
149VBOX_MAIN_DOC_DIR = $(VBOX_PATH_SDK)/docs
150BLDDIRS += $(VBOX_MAIN_DOC_DIR)
151
152$(PATH_TARGET)/docs.Main: \
153 $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main \
154 $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl \
155 $(VBOX_XIDL_FILE_SRC) \
156 | $(PATH_TARGET)/ \
157 $(VBOX_MAIN_DOC_DIR)/
158 $(call MSG_TOOL,xsltproc,doxygen input,$<,$@)
159 $(QUIET)$(RM) -f $(wildcard $(VBOX_MAIN_DOC_DIR)/html/*) $(PATH_TARGET)/docs.Main
160 $(QUIET)$(VBOX_XSLTPROC) -o $(PATH_TARGET)/VirtualBox.idl $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl $(VBOX_XIDL_FILE_SRC)
161 $(QUIET)$(REDIRECT) -E 'DOCDIR=$(VBOX_MAIN_DOC_DIR)' -E 'PATH_TARGET=$(PATH_TARGET)' -E 'PATH_CHM=$(subst /,\,$(VBOX_MAIN_DOC_DIR)/VirtualBoxAPI.chm)' \
162 -- doxygen $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main
163 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) ">>>>>>>>>>>>>>>>>>>> Main.err: >>>>>>>>>>>>>>>>>>>>>>>>"
164 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(CAT) "$(PATH_TARGET)/Main.err"
165 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "<<<<<<<<<<<<<<<<<<<< Main.err <<<<<<<<<<<<<<<<<<<<<<<<<"
166 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
167 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> Please fix above doxygen errors/warnings listed in"
168 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> $(PATH_TARGET)/Main.err"
169 $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
170 -$(EXEC_X86_WIN32) $(VBOX_PATH_HTML_HELP_WORKSHOP)/hhc.exe $(subst /,\\,$(VBOX_MAIN_DOC_DIR)/html/index.hhp)
171 $(APPEND) $(PATH_TARGET)/docs.Main
172# aliases
173docs.main docs.Main: $(PATH_TARGET)/docs.Main
174if !defined(VBOX_ONLY_DOCS) && defined(VBOX_WITH_ALL_DOXYGEN_TARGETS)
175docs: $(PATH_TARGET)/docs.Main
176else
177docs:
178endif
179
180
181ifndef VBOX_ONLY_SDK
182#
183# Generate library with API class wrappers from the XIDL file.
184#
185LIBRARIES += VBoxAPIWrap
186VBoxAPIWrap_TEMPLATE = VBoxMainLib
187VBoxAPIWrap_SOURCES = \
188 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
189 $(VBOX_MAIN_APIWRAPPER_GEN_SRCS)
190VBoxAPIWrap_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
191VBoxAPIWrap_DEFS.win.x86 += _WIN32_WINNT=0x0500
192VBoxAPIWrap_DEFS.win.amd64 += _WIN32_WINNT=0x0510
193VBoxAPIWrap_INCS += \
194 include
195VBoxAPIWrap_CLEAN = \
196 $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp) \
197 $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h) \
198 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
199 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
200 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
201 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even \
202 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd
203
204# Two VBox variables used here and/or in the rules generating wrappers.
205VBoxAPIWrap_VBOX_XSLT = \
206 $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server.xsl
207
208
209# This include file (generated at the bottom of this file), defines
210# VBOX_MAIN_APIWRAPPER_GEN_SRCS and VBOX_MAIN_APIWRAPPER_GEN_HDRS.
211VBoxAPIWrap_VBOX_KMK_FILE = $(PATH_OUT)/vboxapiwrap.kmk
212include $(VBoxAPIWrap_VBOX_KMK_FILE)
213
214ifdef VBOX_WITH_32_ON_64_MAIN_API
215LIBRARIES += VBoxAPIWrap-x86
216VBoxAPIWrap-x86_TEMPLATE = VBoxMainLib-x86
217VBoxAPIWrap-x86_EXTENDS = VBoxAPIWrap
218VBoxAPIWrap-x86_DTRACE_HDR_FLAGS = -32 # ugly, should be fixed in the tool in Config.kmk
219endif
220
221endif # !VBOX_ONLY_SDK
222
223#
224# Some SDK bit.
225#
226INSTALLS += VBox-main-xidl
227VBox-main-xidl_INST = $(INST_SDK)bindings/
228VBox-main-xidl_MODE = a+r,u+w
229VBox-main-xidl_SOURCES = $(VBOX_XIDL_FILE_SRC)
230
231ifdef VBOX_WITH_PYTHON
232INSTALLS += VBox-python-glue
233VBox-python-glue_INST = $(INST_SDK)installer/vboxapi/
234VBox-python-glue_MODE = a+r,u+w
235VBox-python-glue_SOURCES = \
236 glue/vboxapi.py=>__init__.py \
237 $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py
238VBox-python-glue_CLEAN = \
239 $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py
240
241$$(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py: \
242 $(VBOX_PATH_MAIN_SRC)/glue/constants-python.xsl \
243 $(VBOX_XIDL_FILE) \
244 | $$(dir $$@)
245 $(call MSG_TOOL,xsltproc,Python constants,$<,$@)
246 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
247
248endif # VBOX_WITH_PYTHON
249
250ifndef VBOX_ONLY_SDK # Note this goes on for *very* long
251
252#
253# Generate SchemaDefs.h and SchemaDefs.cpp from XML Schema
254# These two files are used by both VBoxC and VBoxSVC.
255#
256BLDDIRS += $(PATH_TARGET)/Main
257
258testschemadefs: $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
259
260
261#
262# VBoxSVC executable
263#
264PROGRAMS += VBoxSVC
265VBoxSVC_TEMPLATE = VBOXMAINEXE
266VBoxSVC_DEFS = \
267 VBOX_MAIN_SETTINGS_ADDONS \
268 IN_VMM_STATIC \
269 $(VBOX_MAIN_DEFS) \
270 $(if $(VBOX_WITH_VBOXSDL),VBOX_WITH_VBOXSDL,) \
271 $(if $(VBOX_WITH_HEADLESS),VBOX_WITH_HEADLESS,) \
272 $(if $(VBOX_WITH_QTGUI),VBOX_WITH_QTGUI,) \
273 $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
274 $(if $(VBOX_WITH_ALSA),VBOX_WITH_ALSA,) \
275 $(if $(VBOX_WITH_PULSE),VBOX_WITH_PULSE,) \
276 $(if $(VBOX_WITH_WINMM),VBOX_WITH_WINMM,) \
277 $(if $(VBOX_WITH_SOLARIS_OSS),VBOX_WITH_SOLARIS_OSS,) \
278 $(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
279 $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \
280 $(if $(VBOX_WITH_AHCI),VBOX_WITH_AHCI,) \
281 $(if $(VBOX_WITH_LSILOGIC),VBOX_WITH_LSILOGIC,) \
282 $(if $(VBOX_WITH_LINUX_COMPILER_H),VBOX_WITH_LINUX_COMPILER_H,) \
283 $(if $(VBOX_WITH_RESOURCE_USAGE_API),VBOX_WITH_RESOURCE_USAGE_API,) \
284 $(if $(VBOX_WITH_PDM_ASYNC_COMPLETION),VBOX_WITH_PDM_ASYNC_COMPLETION,) \
285 $(if $(VBOX_WITH_DBUS),$(if $(VBOX_USB_WITH_DBUS),VBOX_USB_WITH_DBUS,),) \
286 $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,) \
287 $(if $(VBOX_USB_WITH_INOTIFY),VBOX_USB_WITH_INOTIFY,) \
288 $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \
289 $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \
290 $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \
291 $(if $(VBOX_WITH_S3),VBOX_WITH_S3,) \
292 $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) \
293 $(if $(VBOX_WITH_PDM_AUDIO_DRIVER),VBOX_WITH_PDM_AUDIO_DRIVER,) \
294 $(if $(VBOX_WITH_NAT_SERVICE),VBOX_WITH_NAT_SERVICE,) \
295 $(if $(VBOX_WITH_CROGL),VBOX_WITH_CROGL,) \
296 $(if $(VBOX_WITH_CRHGSMI),VBOX_WITH_CRHGSMI,)
297ifdef VBOX_WITH_USB
298 VBoxSVC_DEFS += \
299 VBOX_WITH_USB \
300 $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \
301 $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,)
302endif
303VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE
304VBoxSVC_DEFS.win += _WIN32_WINNT=0x0510
305# Try to load and use libhal at runtime for probing removable media
306# VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
307VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
308VBoxSVC_DEFS.freebsd += VBOX_USE_LIBHAL
309
310VBoxSVC_CXXFLAGS = $(filter-out -Wno-unused,$(TEMPLATE_VBOXMAINEXE_CXXFLAGS))
311
312VBoxSVC_INCS = \
313 include \
314 $(VBoxSVC_0_OUTDIR) \
315 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
316 $(VBOX_MAIN_APIWRAPPER_INCS) \
317 .
318VBoxSVC_INCS.win = \
319 $(VBoxCOM_0_OUTDIR)
320ifdef VBOX_WITH_USB
321 VBoxSVC_INCS.os2 = \
322 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
323endif
324
325VBoxSVC_LIBS += \
326 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) \
327 $(PATH_STAGE_LIB)/SSMStandalone$(VBOX_SUFF_LIB) \
328 $(LIB_DDU)
329
330VBoxSVC_SDKS = VBOX_LIBPNG VBOX_ZLIB VBOX_OPENSSL
331VBoxSVC_LIBS.solaris = \
332 adm \
333 nsl \
334 devinfo \
335 socket \
336 $(LIB_VMM)
337
338VBoxSVC_LIBS.win += \
339 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/dnsapi.lib
340
341VBoxSVC_INTERMEDIATES = \
342 $(VBOX_MAIN_PREREQS) \
343 $(VBOX_XML_SCHEMADEFS_H) \
344 $(VBOX_AUTOGEN_EVENT_H) \
345 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
346
347VBoxSVC_SOURCES = \
348 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
349 src-all/DisplayPNGUtil.cpp \
350 src-all/DisplayResampleImage.cpp \
351 src-all/DisplayUtils.cpp \
352 src-all/EventImpl.cpp \
353 src-all/Global.cpp \
354 src-all/HashedPw.cpp \
355 src-all/Logging.cpp \
356 src-all/PCIDeviceAttachmentImpl.cpp \
357 src-all/ProgressImpl.cpp \
358 src-all/QMTranslatorImpl.cpp \
359 src-all/SecretKeyStore.cpp \
360 src-all/SharedFolderImpl.cpp \
361 src-all/AutoCaller.cpp \
362 src-all/VirtualBoxBase.cpp \
363 src-all/VirtualBoxErrorInfoImpl.cpp \
364 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
365 src-server/ApplianceImpl.cpp \
366 src-server/ApplianceImplExport.cpp \
367 src-server/ApplianceImplImport.cpp \
368 src-server/ApplianceImplIO.cpp \
369 src-server/AudioAdapterImpl.cpp \
370 src-server/BandwidthControlImpl.cpp \
371 src-server/BandwidthGroupImpl.cpp \
372 src-server/BIOSSettingsImpl.cpp \
373 src-server/ClientWatcher.cpp \
374 src-server/ClientToken.cpp \
375 src-server/DHCPServerImpl.cpp \
376 src-server/NetworkServiceRunner.cpp \
377 src-server/NATNetworkImpl.cpp \
378 src-server/GuestOSTypeImpl.cpp \
379 src-server/HostDnsService.cpp \
380 src-server/HostImpl.cpp \
381 src-server/HostNetworkInterfaceImpl.cpp \
382 src-server/HostPower.cpp \
383 src-server/HostVideoInputDeviceImpl.cpp \
384 src-server/MachineImpl.cpp \
385 src-server/MachineImplCloneVM.cpp \
386 src-server/Matching.cpp \
387 src-server/MediumAttachmentImpl.cpp \
388 src-server/MediumFormatImpl.cpp \
389 src-server/MediumImpl.cpp \
390 src-server/MediumLock.cpp \
391 src-server/NATEngineImpl.cpp \
392 src-server/NetworkAdapterImpl.cpp \
393 src-server/ParallelPortImpl.cpp \
394 src-server/ProgressProxyImpl.cpp \
395 src-server/SerialPortImpl.cpp \
396 src-server/SnapshotImpl.cpp \
397 src-server/StorageControllerImpl.cpp \
398 src-server/SystemPropertiesImpl.cpp \
399 src-server/TokenImpl.cpp \
400 src-server/USBControllerImpl.cpp \
401 src-server/USBDeviceFiltersImpl.cpp \
402 src-server/VFSExplorerImpl.cpp \
403 src-server/VirtualBoxImpl.cpp \
404 src-server/VRDEServerImpl.cpp \
405 src-server/generic/AutostartDb-generic.cpp \
406 xml/ovfreader.cpp \
407 xml/Settings.cpp \
408 $(VBOX_XML_SCHEMADEFS_CPP) \
409 $(VBOX_AUTOGEN_EVENT_CPP) \
410 $(if $(VBOX_WITH_XPCOM),src-server/xpcom/server.cpp,)
411
412ifn1of ($(KBUILD_TARGET), win darwin)
413 VBoxSVC_SOURCES += $(PATH_ROOT)/src/VBox/Devices/Network/slirp/resolv_conf_parser.c
414endif
415
416VBoxSVC_SOURCES.darwin = \
417 src-server/darwin/iokit.cpp \
418 src-server/darwin/HostPowerDarwin.cpp \
419 src-server/darwin/HostDnsServiceDarwin.cpp
420
421VBoxSVC_SOURCES.win = \
422 src-server/win/svcmain.cpp \
423 src-server/win/svchlp.cpp \
424 src-server/win/HostPowerWin.cpp \
425 src-server/win/VBoxSVC.rc \
426 src-server/win/VBoxComEvents.cpp \
427 src-server/win/HostDnsServiceWin.cpp
428
429VBoxSVC_SOURCES.linux = \
430 src-server/linux/HostHardwareLinux.cpp \
431 src-server/linux/HostDnsServiceLinux.cpp \
432 src-server/HostDnsServiceResolvConf.cpp
433
434VBoxSVC_SOURCES.solaris = \
435 src-server/linux/vbox-libhal.cpp \
436 src-server/solaris/DynLoadLibSolaris.cpp \
437 src-server/HostDnsServiceResolvConf.cpp
438
439VBoxSVC_SOURCES.os2 = \
440 src-server/HostDnsServiceResolvConf.cpp
441
442VBoxSVC_SOURCES.freebsd = \
443 src-server/freebsd/HostHardwareFreeBSD.cpp \
444 src-server/HostDnsServiceResolvConf.cpp
445
446
447ifdef VBOX_WITH_USB
448 ifdef VBOX_WITH_SYSFS_BY_DEFAULT
449 src-server/linux/USBProxyServiceLinux.cpp_DEFS += VBOX_WITH_SYSFS_BY_DEFAULT
450 endif
451 VBoxSVC_SOURCES += \
452 src-server/USBDeviceFilterImpl.cpp \
453 src-server/USBProxyService.cpp \
454 src-server/HostUSBDeviceImpl.cpp
455 VBoxSVC_SOURCES.darwin += src-server/darwin/USBProxyServiceDarwin.cpp
456 VBoxSVC_SOURCES.linux += src-server/linux/USBProxyServiceLinux.cpp
457 VBoxSVC_SOURCES.linux += src-server/linux/USBGetDevices.cpp
458 VBoxSVC_SOURCES.os2 += src-server/os2/USBProxyServiceOs2.cpp
459 VBoxSVC_SOURCES.solaris += src-server/solaris/USBProxyServiceSolaris.cpp
460 VBoxSVC_SOURCES.win += src-server/win/USBProxyServiceWindows.cpp
461 VBoxSVC_SOURCES.freebsd += src-server/freebsd/USBProxyServiceFreeBSD.cpp
462endif
463
464ifdef VBOX_WITH_NETFLT
465 VBoxSVC_LIBS.win += \
466 $(PATH_STAGE_LIB)/WinNetConfig$(VBOX_SUFF_LIB) \
467 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
468 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/newdev.lib \
469 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
470 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
471endif
472VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration
473
474ifdef VBOX_WITH_CROGL
475 VBoxSVC_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
476 VBoxSVC_LDFLAGS.darwin += -framework OpenGL
477endif
478
479ifeq ($(KBUILD_TYPE),debug)
480 VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
481endif
482
483ifdef VBOX_WITH_RESOURCE_USAGE_API
484 VBoxSVC_SOURCES += \
485 src-server/PerformanceImpl.cpp \
486 src-server/Performance.cpp
487 VBoxSVC_SOURCES.darwin += src-server/darwin/PerformanceDarwin.cpp
488 VBoxSVC_SOURCES.freebsd += src-server/freebsd/PerformanceFreeBSD.cpp
489 VBoxSVC_SOURCES.linux += src-server/linux/PerformanceLinux.cpp
490 VBoxSVC_SOURCES.os2 += src-server/os2/PerformanceOs2.cpp
491 VBoxSVC_SOURCES.solaris += src-server/solaris/PerformanceSolaris.cpp
492 VBoxSVC_SOURCES.win += src-server/win/PerformanceWin.cpp
493 VBoxSVC_LDFLAGS.darwin += -lproc
494 VBoxSVC_LDFLAGS.solaris += -lkstat -lnvpair
495 VBoxSVC_LDFLAGS.win += psapi.lib powrprof.lib
496endif
497
498ifdef VBOX_WITH_HOSTNETIF_API
499 VBoxSVC_SOURCES.win += src-server/win/NetIf-win.cpp
500 VBoxSVC_SOURCES.linux += src-server/linux/NetIf-linux.cpp
501 VBoxSVC_SOURCES.os2 += src-server/os2/NetIf-os2.cpp
502 VBoxSVC_SOURCES.darwin += src-server/darwin/NetIf-darwin.cpp
503 VBoxSVC_SOURCES.solaris += src-server/solaris/NetIf-solaris.cpp
504 VBoxSVC_SOURCES.freebsd += src-server/freebsd/NetIf-freebsd.cpp
505 VBoxSVC_DEFS += VBOX_WITH_HOSTNETIF_API
506 if1of ($(KBUILD_TARGET), linux darwin solaris freebsd)
507 VBoxSVC_SOURCES += src-server/generic/NetIf-generic.cpp
508 endif
509endif
510
511src-server/win/VBoxSVC.rc_INCS = $(VBoxSVC_0_OUTDIR)
512src-server/win/VBoxSVC.rc_DEPS = $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
513src-server/win/VBoxSVC.rc_CLEAN = $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
514
515$$(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc: $(MAKEFILE_CURRENT) $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$(@D))
516 $(APPEND) -t $@ '1 ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
517
518$$(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$(@D))
519 $(VBOX_XSLTPROC) --stringparam Module VBoxSVC -o $@ $< $(VBOX_XIDL_FILE)
520
521## @todo r=klaus unfortunately we don't have xmllint everywhere, would be
522# good to check the validity for every VirtualBox.xidl change.
523#$(VBOX_XIDL_FILE).validated.ts: $(VBOX_XIDL_FILE_SRC)
524# xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
525# $(QUIET)$(CP) --changed -fv $< $(VBOX_XIDL_FILE).validated.ts
526#
527#OTHERS += $(VBOX_XIDL_FILE).validated.ts
528#OTHER_CLEAN += $(VBOX_XIDL_FILE).validated.ts
529
530testvalidxidl: $(VBOX_XIDL_FILE_SRC)
531 xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
532
533
534#
535# Embed some constraints from XML Schema file into VBoxSVC
536#
537VBOX_XML_SCHEMA = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings.xsd
538
539$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
540 $(call MSG_GENERATE,SchemaDefs,$@,$<)
541 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
542
543$(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
544 $(call MSG_GENERATE,SchemaDefs,$@,$<)
545 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
546
547testvalidsettings: $(VBOX_XML_SCHEMA)
548 xmllint --schema $< --noout $(HOME)/.VirtualBox/VirtualBox.xml
549 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.xml
550 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.vbox
551 xmllint --schema $< --noout $(HOME)/VirtualBox\ VMs/*/*.vbox
552
553OTHER_CLEAN += $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
554
555
556#
557# Generate some event stuff for VBoxSVC and VBoxC.
558#
559$(VBOX_AUTOGEN_EVENT_H): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
560 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
561 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEventHeader -o $@ $< $(VBOX_XIDL_FILE)
562
563$(VBOX_AUTOGEN_EVENT_CPP): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
564 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
565 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEvent -o $@ $< $(VBOX_XIDL_FILE)
566
567OTHER_CLEAN += $(VBOX_AUTOGEN_EVENT_H) $(VBOX_AUTOGEN_EVENT_CPP)
568
569ifdef VBOX_WITH_XPCOM
570#
571# VBoxSVCM - VBoxSVC wrapper module
572#
573DLLS += VBoxSVCM
574VBoxSVCM_TEMPLATE = VBOXMAINCOMP
575VBoxSVCM_DEFS = IN_RING3 $(VBOX_MAIN_DEFS)
576ifdef VBOX_WITH_HARDENING
577 VBoxSVCM_DEFS += VBOX_WITH_HARDENING
578endif
579VBoxSVCM_INCS = \
580 include \
581 $(VBoxC_0_OUTDIR) \
582 .
583VBoxSVCM_INTERMEDIATES = $(VBOX_MAIN_PREREQS)
584VBoxSVCM_SOURCES = \
585 src-server/xpcom/server_module.cpp
586VBoxSVCM_LDFLAGS.darwin = \
587 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
588 -exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
589 ifeq ($(KBUILD_TARGET),darwin)
590VBoxSVCM_ORDERDEPS += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
591VBoxSVCM_CLEAN += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
592$$(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def:
593 $(RM) -f $@
594 $(APPEND) $@ _NSGetModule
595 endif
596VBoxSVCM_INTERMEDIATES += $(VBOX_IDL_HEADER.XPCOM)
597
598 # 32-bit version of the module.
599 ifdef VBOX_WITH_32_ON_64_MAIN_API
600DLLS += VBoxSVCM-x86
601VBoxSVCM-x86_TEMPLATE = VBoxMainComp-x86
602VBoxSVCM-x86_EXTENDS = VBoxSVCM
603 endif
604
605endif # VBOX_WITH_XPCOM
606
607
608#
609# VBoxC module
610#
611DLLS += VBoxC
612VBoxC_TEMPLATE = VBOXMAINCOMP
613VBoxC_DEFS = \
614 IN_RING3 \
615 $(VBOX_MAIN_DEFS) \
616 VBOX_COM_INPROC \
617 $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
618 $(if $(VBOX_WITH_ALSA),VBOX_WITH_ALSA,) \
619 $(if $(VBOX_WITH_PULSE),VBOX_WITH_PULSE,) \
620 $(if $(VBOX_WITH_WINMM),VBOX_WITH_WINMM,) \
621 $(if $(VBOX_WITH_SOLARIS_OSS),VBOX_WITH_SOLARIS_OSS,) \
622 $(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
623 $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \
624 $(if $(VBOX_WITH_EFI),VBOX_WITH_EFI,) \
625 $(if $(VBOX_WITH_PDM_ASYNC_COMPLETION),VBOX_WITH_PDM_ASYNC_COMPLETION,) \
626 $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \
627 $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \
628 $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \
629 $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \
630 $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
631 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
632 $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \
633 $(if-expr defined(VBOX_WITH_EHCI) && defined(VBOX_WITH_USB),VBOX_WITH_EHCI,) \
634 $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \
635 $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) \
636 $(if $(VBOX_WITH_VPX),VBOX_WITH_VPX,) \
637 $(if $(VBOX_WITH_PDM_AUDIO_DRIVER),VBOX_WITH_PDM_AUDIO_DRIVER,)
638ifdef VBOX_WITH_CRHGSMI
639 VBoxC_DEFS += VBOX_WITH_CRHGSMI
640endif
641ifdef VBOX_WITH_NETSHAPER
642 VBoxC_DEFS += VBOX_WITH_NETSHAPER
643endif
644VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE
645VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
646VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
647
648VBoxC_SDKS = VBOX_LIBPNG VBOX_ZLIB
649ifdef VBOX_WITH_VPX
650 VBoxC_SDKS += VBOX_VPX
651endif
652ifdef VBOX_WITH_OPENSSL_FIPS
653 VBoxC_SDKS += VBOX_OPENSSL2
654endif
655
656VBoxC_INCS = \
657 include \
658 $(VBoxC_0_OUTDIR) \
659 $(VBOX_MAIN_APIWRAPPER_INCS) \
660 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
661 $(VBOX_MAIN_APIWRAPPER_DIR)/dtrace
662VBoxC_INCS.win = \
663 $(VBoxCOM_0_OUTDIR) \
664 .
665
666VBoxC_LDFLAGS.darwin = \
667 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxC.dylib \
668 -exported_symbols_list $(VBoxC_0_OUTDIR)/VBoxC.def \
669 -framework IOKit
670VBoxC_LDFLAGS.win += /MANIFEST \
671 /DELAYLOAD:user32.dll
672
673
674VBoxC_LIBS += \
675 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) \
676 $(if-expr "$(LIB_VMM)" == "$(VBOX_LIB_VMM_LAZY)",$(LIB_REM),) \
677 $(VBOX_LIB_VMM_LAZY)
678VBoxC_LIBS.win += \
679 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
680ifdef VBOX_WITH_NETFLT
681 VBoxC_LIBS.win += \
682 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
683 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/newdev.lib \
684 $(PATH_STAGE_LIB)/WinNetConfig$(VBOX_SUFF_LIB) \
685 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
686 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
687 VBoxC_LDFLAGS.win += \
688 /DELAYLOAD:newdev.dll \
689 /DELAYLOAD:setupapi.dll \
690 /DELAYLOAD:iphlpapi.dll
691endif
692
693ifdef VBOX_WITH_CROGL
694 VBoxC_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
695 VBoxC_LDFLAGS.darwin += -framework OpenGL
696endif
697
698ifdef VBOX_WITH_DRAG_AND_DROP
699 VBoxC_LIBS += $(PATH_STAGE_LIB)/VBoxDnDHostR3Lib$(VBOX_SUFF_LIB)
700endif
701
702VBoxC_INTERMEDIATES = \
703 $(VBOX_MAIN_PREREQS) \
704 $(VBOX_XML_SCHEMADEFS_H) \
705 $(VBOX_AUTOGEN_EVENT_H) \
706 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
707
708VBoxC_SOURCES = \
709 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
710 src-all/DisplayPNGUtil.cpp \
711 src-all/DisplayResampleImage.cpp \
712 src-all/DisplayUtils.cpp \
713 src-all/EventImpl.cpp \
714 src-all/Global.cpp \
715 src-all/HashedPw.cpp \
716 src-all/Logging.cpp \
717 src-all/PCIDeviceAttachmentImpl.cpp \
718 src-all/ProgressImpl.cpp \
719 src-all/SecretKeyStore.cpp \
720 src-all/SharedFolderImpl.cpp \
721 src-all/AutoCaller.cpp \
722 src-all/VirtualBoxBase.cpp \
723 src-all/VirtualBoxErrorInfoImpl.cpp \
724 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
725 src-client/UsbWebcamInterface.cpp \
726 $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \
727 src-client/Nvram.cpp \
728 src-client/AdditionsFacilityImpl.cpp \
729 src-client/BusAssignmentManager.cpp \
730 $(if $(VBOX_WITH_PCI_PASSTHROUGH),src-client/PCIRawDevImpl.cpp,) \
731 src-client/ClientTokenHolder.cpp \
732 src-client/ConsoleImpl.cpp \
733 src-client/ConsoleImpl2.cpp \
734 src-client/ConsoleImplTeleporter.cpp \
735 src-client/ConsoleVRDPServer.cpp \
736 src-client/DisplayImpl.cpp \
737 src-client/DisplayImplLegacy.cpp \
738 src-client/DisplaySourceBitmapImpl.cpp \
739 src-client/EmulatedUSBImpl.cpp \
740 src-client/GuestImpl.cpp \
741 src-client/GuestDirectoryImpl.cpp \
742 src-client/GuestFileImpl.cpp \
743 src-client/GuestFsObjInfoImpl.cpp \
744 src-client/GuestProcessImpl.cpp \
745 src-client/GuestSessionImpl.cpp \
746 src-client/GuestCtrlImpl.cpp \
747 src-client/KeyboardImpl.cpp \
748 src-client/MachineDebuggerImpl.cpp \
749 src-client/MouseImpl.cpp \
750 src-client/RemoteUSBDeviceImpl.cpp \
751 src-client/SessionImpl.cpp \
752 src-client/USBDeviceImpl.cpp \
753 src-client/VBoxDriversRegister.cpp \
754 src-client/VirtualBoxClientImpl.cpp \
755 src-client/VMMDevInterface.cpp \
756 $(VBOX_AUTOGEN_EVENT_CPP) \
757 $(VBOX_XML_SCHEMADEFS_CPP)
758ifdef VBOX_WITH_PDM_AUDIO_DRIVER
759 VBoxC_SOURCES += \
760 ../Devices/Audio/AudioMixBuffer.cpp \
761 ../Devices/Audio/DrvAudioCommon.cpp \
762 src-client/DrvAudioVRDE.cpp
763else
764 VBoxC_SOURCES += \
765 src-client/AudioSnifferInterface.cpp
766endif
767VBoxC_SOURCES.win = \
768 src-client/win/dllmain.cpp \
769 src-client/win/VBoxC.def \
770 src-client/win/VBoxC.rc
771ifdef VBOX_WITH_GUEST_CONTROL
772 VBoxC_SOURCES += \
773 src-client/GuestSessionImplTasks.cpp \
774 src-client/GuestCtrlPrivate.cpp
775endif
776ifdef VBOX_WITH_DRAG_AND_DROP
777 VBoxC_SOURCES += \
778 src-client/GuestDnDPrivate.cpp \
779 src-client/GuestDnDSourceImpl.cpp \
780 src-client/GuestDnDTargetImpl.cpp
781endif
782ifdef VBOX_WITH_XPCOM
783 VBoxC_SOURCES += \
784 src-client/xpcom/module.cpp
785endif
786ifdef VBOX_WITH_HGCM
787 VBoxC_SOURCES += \
788 src-client/HGCMObjects.cpp \
789 src-client/HGCMThread.cpp \
790 src-client/HGCM.cpp
791endif
792ifdef VBOX_WITH_USB
793 VBoxC_SOURCES += \
794 src-client/RemoteUSBBackend.cpp
795endif
796ifdef VBOX_WITH_VPX
797 VBoxC_SOURCES += \
798 src-client/EbmlWriter.cpp \
799 src-client/VideoRec.cpp
800endif
801
802ifeq ($(KBUILD_TARGET),darwin)
803VBoxC_ORDERDEPS += $(VBoxC_0_OUTDIR)/VBoxC.def
804VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxC.def
805$$(VBoxC_0_OUTDIR)/VBoxC.def: $(MAKEFILE_CURRENT)
806 $(RM) -f $@
807 $(APPEND) $@ _NSGetModule
808 $(APPEND) $@ _VBoxDriversRegister
809endif
810
811src-client/ConsoleImpl.cpp_DEFS = \
812 $(if $(VBOX_BLEEDING_EDGE),VBOX_BLEEDING_EDGE=\"$(VBOX_BLEEDING_EDGE)\",) \
813 $(if $(VBOX_WITH_OPENSSL_FIPS), VBOX_OPENSSL_FIPS,)
814
815
816src-client/win/VBoxC.rc_DEPS = $(VBoxC_0_OUTDIR)/VBoxC.rgs $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
817VBoxC_CLEAN.win += $(VBoxC_0_OUTDIR)/VBoxC.rgs
818
819$$(VBoxC_0_OUTDIR)/VBoxC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
820 $(VBOX_XSLTPROC) --stringparam Module VBoxC -o $@ $< $(VBOX_XIDL_FILE)
821
822ifdef VBOX_WITH_32_ON_64_MAIN_API
823 #
824 # 32-bit VBox API Client In-Process module.
825 #
826 # This is currently just a 32-bit version of VBoxC. It might be desirable to
827 # split up VBoxC into a simple client and a VM client part later, in which
828 # case this module will be a simple client.
829 #
830 # Note! One important thing is that the typelib for this DLL must be build
831 # with the /env win32 switch and the VBoxC typelib with /env amd64, if
832 # not they will overwrite each others typelib module entry.
833 #
834 DLLS += VBoxClient-x86
835 VBoxClient-x86_TEMPLATE = VBoxMainComp-x86
836 VBoxClient-x86_EXTENDS = VBoxC
837 VBoxClient-x86_DEFS = VBOX_COM_INPROC_API_CLIENT $(VBoxC_DEFS)
838 VBoxClient-x86_INST.win = $(INST_DLL)x86/
839 VBoxClient-x86_INCS.win = \
840 $(VBoxClient-x86_0_OUTDIR) \
841 $(VBoxCOM-x86_0_OUTDIR) \
842 $(VBoxC_INCS.win)
843 VBoxClient-x86_SOURCES = \
844 src-all/EventImpl.cpp \
845 src-all/Global.cpp \
846 src-all/AutoCaller.cpp \
847 src-all/VirtualBoxBase.cpp \
848 src-all/VirtualBoxErrorInfoImpl.cpp \
849 src-client/ClientTokenHolder.cpp \
850 src-client/SessionImpl.cpp \
851 src-client/VirtualBoxClientImpl.cpp \
852 $(VBOX_AUTOGEN_EVENT_CPP) \
853 $(VBOX_XML_SCHEMADEFS_CPP)
854 VBoxClient-x86_SOURCES.win = \
855 src-client/win/dllmain.cpp \
856 src-client/win/VBoxClient-x86.def \
857 src-client/win/VBoxClient-x86.rc
858 ifdef VBOX_WITH_XPCOM
859 VBoxClient-x86_SOURCES += \
860 src-client/xpcom/module.cpp
861 endif
862 VBoxClient-x86_LIBS = \
863 $(PATH_STAGE_LIB)/VBoxAPIWrap-x86$(VBOX_SUFF_LIB)
864 VBoxClient-x86_LIBS.win = $(NO_SUCH_VARIABLE)
865 VBoxClient-x86_LIBS.win.x86 = $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/delayimp.lib
866 VBoxClient-x86_CLEAN.win += $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs
867 src-client/win/VBoxClient-x86.rc_DEPS = \
868 $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs \
869 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
870
871 $$(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs: \
872 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
873 $(VBOX_XIDL_FILE) | $$(dir $$@)
874 $(VBOX_XSLTPROC) --stringparam Module VBoxC -o $@ $< $(VBOX_XIDL_FILE)
875
876endif
877
878
879#
880# VBoxCOM - COM Abstraction Layer library
881#
882LIBRARIES += VBoxCOM
883VBoxCOM_TEMPLATE = VBoxMainLib
884VBoxCOM_INTERMEDIATES = $(VBOX_MAIN_PREREQS) \
885 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
886VBoxCOM_SOURCES = \
887 glue/com.cpp \
888 glue/initterm.cpp \
889 glue/string.cpp \
890 glue/AutoLock.cpp \
891 glue/EventQueue.cpp \
892 glue/NativeEventQueue.cpp \
893 glue/ErrorInfo.cpp \
894 glue/errorprint.cpp
895VBoxCOM_INCS += $(VBOX_MAIN_APIWRAPPER_INCS) \
896 include
897ifeq ($(KBUILD_TARGET),win)
898 VBoxCOM_DEFS.x86 = _WIN32_WINNT=0x0500
899 VBoxCOM_DEFS.amd64 = _WIN32_WINNT=0x0510
900 VBoxCOM_SOURCES += \
901 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c
902else # !win
903 VBoxCOM_SOURCES += \
904 $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c \
905 glue/xpcom/helpers.cpp
906endif # !win
907
908glue/com.cpp_DEFS = \
909 $(if $(VBOX_BLEEDING_EDGE),VBOX_BLEEDING_EDGE=\"$(VBOX_BLEEDING_EDGE)\",) \
910 KBUILD_TYPE=\"$(KBUILD_TYPE)\"
911
912# 32-bit version of VBoxCOM.
913ifdef VBOX_WITH_32_ON_64_MAIN_API
914 LIBRARIES += VBoxCOM-x86
915 VBoxCOM-x86_TEMPLATE = VBoxMainLib-x86
916 VBoxCOM-x86_EXTENDS = VBoxCOM
917endif
918
919
920
921#
922# The VBoxExtPackHelperApp.
923#
924ifdef VBOX_WITH_EXTPACK
925 PROGRAMS += VBoxExtPackHelperApp
926 VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot
927 VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security
928 VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows
929 VBoxExtPackHelperApp_SOURCES = \
930 src-helper-apps/VBoxExtPackHelperApp.cpp \
931 src-all/ExtPackUtil.cpp
932 VBoxExtPackHelperApp_SOURCES.win = \
933 src-helper-apps/VBoxExtPackHelperApp.rc
934 VBoxExtPackHelperApp_LIBS = \
935 $(LIB_RUNTIME)
936endif # VBOX_WITH_EXTPACK
937
938#
939# VolInfo
940#
941ifdef VBOX_WITH_DEVMAPPER
942 PROGRAMS.linux += VBoxVolInfo
943 VBoxVolInfo_TEMPLATE = VBoxR3SetUidToRoot
944 VBoxVolInfo_SOURCES = src-helper-apps/VBoxVolInfo.cpp
945 VBoxVolInfo_LIBS = devmapper
946endif
947
948endif # !VBOX_ONLY_SDK (the ifndef is far above)
949
950
951#
952# Installs com related thing(s) to bin.
953#
954INSTALLS.win += VBoxMain-com-inst
955VBoxMain-com-inst_INST = $(INST_BIN)
956VBoxMain-com-inst_MODE = a+r,u+w
957VBoxMain-com-inst_SOURCES = src-all/win/comregister.cmd
958
959
960if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "linux"
961 #
962 # Installs linux/hardening related things to components.
963 #
964 INSTALLS.linux += VBoxMain-hardening-inst
965 VBoxMain-hardening-inst_INST = $(INST_BIN)components/
966 VBoxMain-hardening-inst_SYMLINKS = \
967 VBoxDDU.so=>../VBoxDDU.so \
968 VBoxREM.so=>../VBoxREM.so \
969 VBoxRT.so=>../VBoxRT.so \
970 VBoxVMM.so=>../VBoxVMM.so \
971 VBoxXPCOM.so=>../VBoxXPCOM.so
972endif
973
974
975if defined(VBOX_WITH_MIDL_PROXY_STUB) && "$(KBUILD_TARGET)" == "win"
976 #
977 # Experimental COM proxy + stub DLL.
978 #
979 DLLS += VBoxProxyStub
980 VBoxProxyStub_TEMPLATE = VBOXMAINCOMP
981 VBoxProxyStub_DEFS = REGISTER_PROXY_DLL
982 VBoxProxyStub_DEFS.win.x86 = WIN32
983 VBoxProxyStub_SOURCES = \
984 $(VBoxCOM_0_OUTDIR)/dlldata.c \
985 $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c \
986 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
987 src-all/win/VBoxProxyStub.def
988
989 ifdef VBOX_WITH_32_ON_64_MAIN_API
990 DLLS += VBoxProxyStub-x86
991 VBoxProxyStub-x86_TEMPLATE = VBoxMainComp-x86
992 VBoxProxyStub-x86_DEFS = REGISTER_PROXY_DLL
993 VBoxProxyStub-x86_DEFS.win.x86 = WIN32
994 VBoxProxyStub-x86_SOURCES = \
995 $(VBoxCOM-x86_0_OUTDIR)/dlldata.c \
996 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c \
997 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
998 src-all/win/VBoxProxyStub.def
999 endif
1000endif
1001
1002
1003
1004# generate rules
1005include $(FILE_KBUILD_SUB_FOOTER)
1006
1007
1008
1009#
1010# Additions rules.
1011#
1012
1013## @todo this hack ain't cutting it any longer. (the file name is abspath'ed since ages now.)
1014glue/xpcom/helpers.cpp: $(VBOX_IDL_TYPELIB.XPCOM)
1015
1016$(VBOX_IDL_FILE.XPCOM): $(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1017 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1018 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
1019
1020$(VBOX_IDL_TYPELIB.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1021 $(call MSG_TOOL,xpidl,VBoxSVC,$<,$@)
1022 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m typelib -I $(VBOX_PATH_XPCOM_IDL) -e $@ $<
1023 $(CHMOD) 0644 $@
1024## @todo ^^^^^^^^^^^^ fix horrible hack
1025
1026$(VBOX_IDL_HEADER.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1027 $(call MSG_TOOL,xpidl,VBoxSVC,$<,$@)
1028 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m header -I $(VBOX_PATH_XPCOM_IDL) -e $@ $<
1029
1030$(VBOX_IDL_FILE.MSCOM): $(VBOX_PATH_MAIN_SRC)/idl/midl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1031 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1032 $(QUIET)$(VBOX_XSLTPROC) -o $@ $(if $(VBOX_WITH_MIDL_PROXY_STUB),-stringparam g_fGenProxy yes,) $< $(VBOX_XIDL_FILE)
1033
1034# Aliases for testing purposes.
1035ifdef VBOX_WITH_XPCOM
1036testidl: $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c
1037testidlhdr: $(VBOX_IDL_HEADER.XPCOM)
1038else
1039testidl: $(VBOX_IDL_FILE.MSCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1040 $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c,)
1041endif
1042
1043
1044$(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c: $(VBOX_PATH_MAIN_SRC)/idl/xpidl_iid.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1045 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1046 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
1047
1048$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1049+ $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
1050$(if $(VBOX_WITH_MIDL_PROXY_STUB),+ $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM_0_OUTDIR)/dlldata.c,) \
1051+ $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1052 $(VBOX_WIN_MIDL) /nologo \
1053 $(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64" && "$(KBUILD_HOST)" == "win",/env amd64,/env win32) \
1054 /robust /protocol all /target NT51 \
1055 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM_0_OUTDIR)) \
1056 /cpp_cmd $(subst $(EXEC_X86_WIN32),,$(call VBOX_FN_MAKE_WIN_PATH,$(TOOL_$(VBOX_VCC_TOOL)_CC))) \
1057 /I $(call VBOX_FN_MAKE_WIN_PATH,$(PATH_SDK_$(VBOX_WINPSDK)_INC)) \
1058 /I idl \
1059 $(call VBOX_FN_MAKE_WIN_PATH,$<)
1060
1061$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1062+ $(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h \
1063$(if $(VBOX_WITH_MIDL_PROXY_STUB),+ $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM-x86_0_OUTDIR)/dlldata.c,) \
1064+ $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1065 $(VBOX_WIN_MIDL) /nologo /env win32 /target NT51 \
1066 /robust /protocol all \
1067 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)) \
1068 /tlb $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb) \
1069 /cpp_cmd $(subst $(EXEC_X86_WIN32),,$(call VBOX_FN_MAKE_WIN_PATH,$(TOOL_$(VBOX_VCC_TOOL_STEM)X86_CC))) \
1070 /I $(call VBOX_FN_MAKE_WIN_PATH,$(PATH_SDK_$(VBOX_WINPSDK)_INC)) \
1071 /I idl \
1072 $(call VBOX_FN_MAKE_WIN_PATH,$<)
1073
1074#
1075# Translation stuff
1076#
1077VBoxSVC_VBOX_HEADERS = \
1078 include/collection.h \
1079 include/MachineImpl.h
1080VBoxSVC_VBOX_TRANSLATIONS = \
1081 nls/VBoxSVC_de.ts
1082
1083VBoxC_VBOX_HEADERS = \
1084 include/ConsoleImpl.h
1085
1086VBoxC_VBOX_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1087VBoxC_VBOX_HEADERS += $(VBOX_MAIN_APIWRAPPER_INCS)
1088
1089VBoxC_VBOX_TRANSLATIONS = \
1090 nls/VBoxC_de.ts
1091
1092ifdef VBOX_WITH_JMSCOM
1093
1094#
1095# Java glue JAR files
1096#
1097VBOX_JMSCOM_JAR = $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
1098VBOX_JMSCOM_TARGET := $(PATH_TARGET)/vboxjmscom-gen
1099VBOX_JMSCOM_GEN = $(VBOX_JMSCOM_TARGET)/jmscomgen
1100VBOX_JMSCOM_JDEST := $(VBOX_JMSCOM_TARGET)/jdest
1101VBOX_GLUE_XSLT_DIR := $(PATH_ROOT)/src/VBox/Main/glue
1102VBOX_JACOB_DIR := $(PATH_ROOT)/src/libs/jacob-1.17
1103
1104INSTALLS += VBoxJMscom-inst-jar
1105VBoxJMscom-inst-jar_INST = $(INST_SDK)bindings/mscom/java/
1106VBoxJMscom-inst-jar_MODE = a+r,u+w
1107VBoxJMscom-inst-jar_SOURCES = \
1108 $(VBOX_JMSCOM_JAR)
1109VBoxJMscom-inst-jar_CLEAN = \
1110 $(VBOX_JMSCOM_JAR) \
1111 $(VBOX_JMSCOM_GEN)/jmscomglue.list \
1112 $(wildcard \
1113 $(VBOX_JMSCOM_GEN)/java/*.java \
1114 $(VBOX_JMSCOM_JDEST)/*.class \
1115 $(VBOX_JMSCOM_JDEST)/*/*.class \
1116 $(VBOX_JMSCOM_JDEST)/*/*/*.class \
1117 $(VBOX_JMSCOM_JDEST)/*/*/*/*.class \
1118 )
1119VBoxJMscom-inst-jar_BLDDIRS += $(VBOX_JMSCOM_GEN)/java
1120
1121$(VBOX_JMSCOM_GEN)/jmscomglue.list: \
1122 $(VBOX_XIDL_FILE) \
1123 $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl \
1124 $(VBOX_FILESPLIT) \
1125 | $(VBOX_JMSCOM_GEN)/java/
1126 $(call MSG_L1,Generating Java MSCOM glue files from XIDL)
1127 $(QUIET)$(RM) -f $(wildcard $(VBOX_JMSCOM_GEN)/java/*.java)
1128 $(QUIET)$(VBOX_XSLTPROC) \
1129 --stringparam filelistonly "" \
1130 --stringparam G_vboxApiSuffix $(VBOX_API_SUFFIX) \
1131 --stringparam G_vboxGlueStyle mscom \
1132 --stringparam G_vboxDirPrefix "" \
1133 -o $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl $<
1134 $(QUIET)$(VBOX_FILESPLIT) $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_JMSCOM_GEN)/java
1135 $(QUIET)echo $(VBOX_JMSCOM_GEN)/java/*.java > $@
1136
1137$$(VBOX_JMSCOM_JAR): $(VBOX_JMSCOM_GEN)/jmscomglue.list | $$(dir $$@)
1138 $(call MSG_TOOL,javac,$(notdir $@),jmscomglue.list,)
1139 $(QUIET)$(RM) -Rf $(VBOX_JMSCOM_JDEST)
1140 $(QUIET)$(MKDIR) -p $(VBOX_JMSCOM_JDEST)
1141 $(call MSG_TOOL,javac,$(notdir $@),...,)
1142 $(QUIET)$(VBOX_JAVAC) $(VBOX_JAVAC_OPTS) @$(VBOX_JMSCOM_GEN)/jmscomglue.list \
1143 -d $(VBOX_JMSCOM_JDEST) -classpath "$(VBOX_JMSCOM_JDEST)$(VBOX_SEP)$(VBOX_JACOB_DIR)/jacob.jar"
1144 $(call MSG_LINK,$(notdir $@),$@)
1145 $(QUIET)$(VBOX_JAR) cf $@ -C $(VBOX_JMSCOM_JDEST) .
1146
1147## @todo compile TestVBox.java (see below) to have sanity checking
1148
1149endif # VBOX_WITH_JMSCOM
1150
1151#
1152# Install Java glue sample code.
1153#
1154INSTALLS += javagluesample
1155javagluesample_INST = $(INST_SDK)bindings/glue/java/
1156javagluesample_MODE = a+r,u+w
1157javagluesample_SOURCES = \
1158 $(VBOX_PATH_MAIN_SRC)/glue/tests/TestVBox.java=>TestVBox.java \
1159 $(VBOX_PATH_MAIN_SRC)/glue/tests/Makefile=>Makefile
1160
1161#
1162# Rules associated with VBoxAPIWrap (in typical invocation order).
1163# We keep them down here to simplify the use of VBoxAPIWrap_0_OUTDIR.
1164#
1165
1166# Generate a make include file which lists the wrapper header and source files.
1167$(VBoxAPIWrap_VBOX_KMK_FILE).ts \
1168+| $(VBoxAPIWrap_VBOX_KMK_FILE): \
1169 $(VBOX_XIDL_FILE) \
1170 $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl \
1171 $(VBOX_PATH_MAIN_SRC)/Makefile.kmk
1172 $(call MSG_GENERATE,,$(VBoxAPIWrap_VBOX_KMK_FILE))
1173 $(QUIET)$(RM) -f $@
1174 $(QUIET)$(MKDIR) -p $(@D)
1175 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1176 -o $@ $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl $<
1177 $(QUIET)$(CP) --changed -fv $@ $(VBoxAPIWrap_VBOX_KMK_FILE)
1178
1179# Generate the header files for the wrappers.
1180$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1181+| $(VBOX_MAIN_APIWRAPPER_GEN_HDRS): \
1182 $(VBOX_XIDL_FILE) \
1183 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1184 $(VBoxAPIWrap_VBOX_XSLT) \
1185 $(VBOX_FILESPLIT) \
1186 | $$(dir $$@)
1187 $(call MSG_L1,Generating C++ Server API wrapper header files from XIDL)
1188 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_HDRS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h))
1189 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1190 --stringparam generating "headers" \
1191 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $<
1192 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1193
1194# Generate the DTrace probes for the wrappers and combine them with handcoded probes.
1195$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1196+| $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d: \
1197 $(VBOX_XIDL_FILE) \
1198 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1199 $(VBoxAPIWrap_VBOX_XSLT) \
1200 $(VBOX_FILESPLIT) \
1201 | $$(dir $$@)
1202 $(call MSG_L1,Generating DTrace Provider for the VBox API (from XIDL))
1203 $(QUIET)$(RM) -f -- "$@" "[email protected]"
1204 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1205 --stringparam generating "dtrace-probes" \
1206 -o "$@" $(VBoxAPIWrap_VBOX_XSLT) $<
1207 $(QUIET)$(SED) -e '' -o "[email protected]" \
1208 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-start.d" \
1209 "$@" \
1210 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-end.d"
1211 $(QUIET)$(MV) -- "[email protected]" "$@"
1212 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d"
1213
1214# Generate the wrapper source files - split in two due to long processing time
1215$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even \
1216+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_EVEN): \
1217 $(VBOX_XIDL_FILE) \
1218 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1219 $(VBoxAPIWrap_VBOX_XSLT) \
1220 $(VBOX_FILESPLIT) \
1221 | $$(dir $$@)
1222 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 1)
1223 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1224 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1225 --stringparam generating "sources" \
1226 --param reminder 0 \
1227 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $<
1228 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1229
1230$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1231+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_ODD): \
1232 $(VBOX_XIDL_FILE) \
1233 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1234 $(VBoxAPIWrap_VBOX_XSLT) \
1235 $(VBOX_FILESPLIT) \
1236 | $$(dir $$@)
1237 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 2)
1238 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1239 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1240 --stringparam generating "sources" \
1241 --param reminder 1 \
1242 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $<
1243 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1244
1245testapiwrappers:: \
1246 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1247 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1248 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1249 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even
1250
1251
1252#
1253# NLS stuff.
1254#
1255updatenls::
1256 $(VBOX_LUPDATE) $(VBoxSVC_SOURCES) $(VBoxSVC_VBOX_HEADERS) -ts $(VBoxSVC_VBOX_TRANSLATIONS)
1257 $(VBOX_LUPDATE) $(VBoxC_SOURCES) $(VBoxC_VBOX_HEADERS) -ts $(VBoxC_VBOX_TRANSLATIONS)
1258
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