VirtualBox

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

Last change on this file since 54796 was 54344, checked in by vboxsync, 10 years ago

Disable building the KEyStore for now because of too old openssl system libraries on some Linux hosts

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 43.0 KB
Line 
1# $Id: Makefile.kmk 54344 2015-02-20 19:22:34Z 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/SharedFolderImpl.cpp \
360 src-all/AutoCaller.cpp \
361 src-all/VirtualBoxBase.cpp \
362 src-all/VirtualBoxErrorInfoImpl.cpp \
363 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
364 src-server/ApplianceImpl.cpp \
365 src-server/ApplianceImplExport.cpp \
366 src-server/ApplianceImplImport.cpp \
367 src-server/ApplianceImplIO.cpp \
368 src-server/AudioAdapterImpl.cpp \
369 src-server/BandwidthControlImpl.cpp \
370 src-server/BandwidthGroupImpl.cpp \
371 src-server/BIOSSettingsImpl.cpp \
372 src-server/ClientWatcher.cpp \
373 src-server/ClientToken.cpp \
374 src-server/DHCPServerImpl.cpp \
375 src-server/NetworkServiceRunner.cpp \
376 src-server/NATNetworkImpl.cpp \
377 src-server/GuestOSTypeImpl.cpp \
378 src-server/HostDnsService.cpp \
379 src-server/HostImpl.cpp \
380 src-server/HostNetworkInterfaceImpl.cpp \
381 src-server/HostPower.cpp \
382 src-server/HostVideoInputDeviceImpl.cpp \
383 src-server/MachineImpl.cpp \
384 src-server/MachineImplCloneVM.cpp \
385 src-server/Matching.cpp \
386 src-server/MediumAttachmentImpl.cpp \
387 src-server/MediumFormatImpl.cpp \
388 src-server/MediumImpl.cpp \
389 src-server/MediumLock.cpp \
390 src-server/NATEngineImpl.cpp \
391 src-server/NetworkAdapterImpl.cpp \
392 src-server/ParallelPortImpl.cpp \
393 src-server/ProgressProxyImpl.cpp \
394 src-server/SerialPortImpl.cpp \
395 src-server/SnapshotImpl.cpp \
396 src-server/StorageControllerImpl.cpp \
397 src-server/SystemPropertiesImpl.cpp \
398 src-server/TokenImpl.cpp \
399 src-server/USBControllerImpl.cpp \
400 src-server/USBDeviceFiltersImpl.cpp \
401 src-server/VFSExplorerImpl.cpp \
402 src-server/VirtualBoxImpl.cpp \
403 src-server/VRDEServerImpl.cpp \
404 src-server/generic/AutostartDb-generic.cpp \
405 xml/ovfreader.cpp \
406 xml/Settings.cpp \
407 $(VBOX_XML_SCHEMADEFS_CPP) \
408 $(VBOX_AUTOGEN_EVENT_CPP) \
409 $(if $(VBOX_WITH_XPCOM),src-server/xpcom/server.cpp,)
410
411ifn1of ($(KBUILD_TARGET), win darwin)
412 VBoxSVC_SOURCES += $(PATH_ROOT)/src/VBox/Devices/Network/slirp/resolv_conf_parser.c
413endif
414
415VBoxSVC_SOURCES.darwin = \
416 src-server/darwin/iokit.cpp \
417 src-server/darwin/HostPowerDarwin.cpp \
418 src-server/darwin/HostDnsServiceDarwin.cpp
419
420VBoxSVC_SOURCES.win = \
421 src-server/win/svcmain.cpp \
422 src-server/win/svchlp.cpp \
423 src-server/win/HostPowerWin.cpp \
424 src-server/win/VBoxSVC.rc \
425 src-server/win/VBoxComEvents.cpp \
426 src-server/win/HostDnsServiceWin.cpp
427
428VBoxSVC_SOURCES.linux = \
429 src-server/linux/HostHardwareLinux.cpp \
430 src-server/linux/HostDnsServiceLinux.cpp \
431 src-server/HostDnsServiceResolvConf.cpp
432
433VBoxSVC_SOURCES.solaris = \
434 src-server/linux/vbox-libhal.cpp \
435 src-server/solaris/DynLoadLibSolaris.cpp \
436 src-server/HostDnsServiceResolvConf.cpp
437
438VBoxSVC_SOURCES.os2 = \
439 src-server/HostDnsServiceResolvConf.cpp
440
441VBoxSVC_SOURCES.freebsd = \
442 src-server/freebsd/HostHardwareFreeBSD.cpp
443
444
445ifdef VBOX_WITH_USB
446 ifdef VBOX_WITH_SYSFS_BY_DEFAULT
447 src-server/linux/USBProxyServiceLinux.cpp_DEFS += VBOX_WITH_SYSFS_BY_DEFAULT
448 endif
449 VBoxSVC_SOURCES += \
450 src-server/USBDeviceFilterImpl.cpp \
451 src-server/USBProxyService.cpp \
452 src-server/HostUSBDeviceImpl.cpp
453 VBoxSVC_SOURCES.darwin += src-server/darwin/USBProxyServiceDarwin.cpp
454 VBoxSVC_SOURCES.linux += src-server/linux/USBProxyServiceLinux.cpp
455 VBoxSVC_SOURCES.linux += src-server/linux/USBGetDevices.cpp
456 VBoxSVC_SOURCES.os2 += src-server/os2/USBProxyServiceOs2.cpp
457 VBoxSVC_SOURCES.solaris += src-server/solaris/USBProxyServiceSolaris.cpp
458 VBoxSVC_SOURCES.win += src-server/win/USBProxyServiceWindows.cpp
459 VBoxSVC_SOURCES.freebsd += src-server/freebsd/USBProxyServiceFreeBSD.cpp
460endif
461
462ifdef VBOX_WITH_NETFLT
463 VBoxSVC_LIBS.win += \
464 $(PATH_STAGE_LIB)/WinNetConfig$(VBOX_SUFF_LIB) \
465 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
466 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/newdev.lib \
467 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
468 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
469endif
470VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration
471
472ifdef VBOX_WITH_CROGL
473 VBoxSVC_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
474 VBoxSVC_LDFLAGS.darwin += -framework OpenGL
475endif
476
477ifeq ($(KBUILD_TYPE),debug)
478 VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
479endif
480
481ifdef VBOX_WITH_RESOURCE_USAGE_API
482 VBoxSVC_SOURCES += \
483 src-server/PerformanceImpl.cpp \
484 src-server/Performance.cpp
485 VBoxSVC_SOURCES.darwin += src-server/darwin/PerformanceDarwin.cpp
486 VBoxSVC_SOURCES.freebsd += src-server/freebsd/PerformanceFreeBSD.cpp
487 VBoxSVC_SOURCES.linux += src-server/linux/PerformanceLinux.cpp
488 VBoxSVC_SOURCES.os2 += src-server/os2/PerformanceOs2.cpp
489 VBoxSVC_SOURCES.solaris += src-server/solaris/PerformanceSolaris.cpp
490 VBoxSVC_SOURCES.win += src-server/win/PerformanceWin.cpp
491 VBoxSVC_LDFLAGS.darwin += -lproc
492 VBoxSVC_LDFLAGS.solaris += -lkstat -lnvpair
493 VBoxSVC_LDFLAGS.win += psapi.lib powrprof.lib
494endif
495
496ifdef VBOX_WITH_HOSTNETIF_API
497 VBoxSVC_SOURCES.win += src-server/win/NetIf-win.cpp
498 VBoxSVC_SOURCES.linux += src-server/linux/NetIf-linux.cpp
499 VBoxSVC_SOURCES.os2 += src-server/os2/NetIf-os2.cpp
500 VBoxSVC_SOURCES.darwin += src-server/darwin/NetIf-darwin.cpp
501 VBoxSVC_SOURCES.solaris += src-server/solaris/NetIf-solaris.cpp
502 VBoxSVC_SOURCES.freebsd += src-server/freebsd/NetIf-freebsd.cpp
503 VBoxSVC_DEFS += VBOX_WITH_HOSTNETIF_API
504 if1of ($(KBUILD_TARGET), linux darwin solaris freebsd)
505 VBoxSVC_SOURCES += src-server/generic/NetIf-generic.cpp
506 endif
507endif
508
509src-server/win/VBoxSVC.rc_INCS = $(VBoxSVC_0_OUTDIR)
510src-server/win/VBoxSVC.rc_DEPS = $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
511src-server/win/VBoxSVC.rc_CLEAN = $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
512
513$$(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc: $(MAKEFILE_CURRENT) $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$(@D))
514 $(APPEND) -t $@ '1 ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
515
516$$(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$(@D))
517 $(VBOX_XSLTPROC) --stringparam Module VBoxSVC -o $@ $< $(VBOX_XIDL_FILE)
518
519## @todo r=klaus unfortunately we don't have xmllint everywhere, would be
520# good to check the validity for every VirtualBox.xidl change.
521#$(VBOX_XIDL_FILE).validated.ts: $(VBOX_XIDL_FILE_SRC)
522# xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
523# $(QUIET)$(CP) --changed -fv $< $(VBOX_XIDL_FILE).validated.ts
524#
525#OTHERS += $(VBOX_XIDL_FILE).validated.ts
526#OTHER_CLEAN += $(VBOX_XIDL_FILE).validated.ts
527
528testvalidxidl: $(VBOX_XIDL_FILE_SRC)
529 xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
530
531
532#
533# Embed some constraints from XML Schema file into VBoxSVC
534#
535VBOX_XML_SCHEMA = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings.xsd
536
537$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
538 $(call MSG_GENERATE,SchemaDefs,$@,$<)
539 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
540
541$(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA) | $$(dir $$@)
542 $(call MSG_GENERATE,SchemaDefs,$@,$<)
543 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
544
545testvalidsettings: $(VBOX_XML_SCHEMA)
546 xmllint --schema $< --noout $(HOME)/.VirtualBox/VirtualBox.xml
547 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.xml
548 xmllint --schema $< --noout $(HOME)/.VirtualBox/Machines/*/*.vbox
549 xmllint --schema $< --noout $(HOME)/VirtualBox\ VMs/*/*.vbox
550
551OTHER_CLEAN += $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
552
553
554#
555# Generate some event stuff for VBoxSVC and VBoxC.
556#
557$(VBOX_AUTOGEN_EVENT_H): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
558 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
559 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEventHeader -o $@ $< $(VBOX_XIDL_FILE)
560
561$(VBOX_AUTOGEN_EVENT_CPP): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
562 $(call MSG_TOOL,xsltproc,autogen events,$<,$@)
563 $(QUIET)$(VBOX_XSLTPROC) --stringparam G_kind VBoxEvent -o $@ $< $(VBOX_XIDL_FILE)
564
565OTHER_CLEAN += $(VBOX_AUTOGEN_EVENT_H) $(VBOX_AUTOGEN_EVENT_CPP)
566
567ifdef VBOX_WITH_XPCOM
568#
569# VBoxSVCM - VBoxSVC wrapper module
570#
571DLLS += VBoxSVCM
572VBoxSVCM_TEMPLATE = VBOXMAINCOMP
573VBoxSVCM_DEFS = IN_RING3 $(VBOX_MAIN_DEFS)
574ifdef VBOX_WITH_HARDENING
575 VBoxSVCM_DEFS += VBOX_WITH_HARDENING
576endif
577VBoxSVCM_INCS = \
578 include \
579 $(VBoxC_0_OUTDIR) \
580 .
581VBoxSVCM_INTERMEDIATES = $(VBOX_MAIN_PREREQS)
582VBoxSVCM_SOURCES = \
583 src-server/xpcom/server_module.cpp
584VBoxSVCM_LDFLAGS.darwin = \
585 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
586 -exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
587 ifeq ($(KBUILD_TARGET),darwin)
588VBoxSVCM_ORDERDEPS += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
589VBoxSVCM_CLEAN += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
590$$(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def:
591 $(RM) -f $@
592 $(APPEND) $@ _NSGetModule
593 endif
594VBoxSVCM_INTERMEDIATES += $(VBOX_IDL_HEADER.XPCOM)
595
596 # 32-bit version of the module.
597 ifdef VBOX_WITH_32_ON_64_MAIN_API
598DLLS += VBoxSVCM-x86
599VBoxSVCM-x86_TEMPLATE = VBoxMainComp-x86
600VBoxSVCM-x86_EXTENDS = VBoxSVCM
601 endif
602
603endif # VBOX_WITH_XPCOM
604
605
606#
607# VBoxC module
608#
609DLLS += VBoxC
610VBoxC_TEMPLATE = VBOXMAINCOMP
611VBoxC_DEFS = \
612 IN_RING3 \
613 $(VBOX_MAIN_DEFS) \
614 VBOX_COM_INPROC \
615 $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
616 $(if $(VBOX_WITH_ALSA),VBOX_WITH_ALSA,) \
617 $(if $(VBOX_WITH_PULSE),VBOX_WITH_PULSE,) \
618 $(if $(VBOX_WITH_WINMM),VBOX_WITH_WINMM,) \
619 $(if $(VBOX_WITH_SOLARIS_OSS),VBOX_WITH_SOLARIS_OSS,) \
620 $(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
621 $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \
622 $(if $(VBOX_WITH_EFI),VBOX_WITH_EFI,) \
623 $(if $(VBOX_WITH_PDM_ASYNC_COMPLETION),VBOX_WITH_PDM_ASYNC_COMPLETION,) \
624 $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \
625 $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \
626 $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \
627 $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \
628 $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
629 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
630 $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \
631 $(if-expr defined(VBOX_WITH_EHCI) && defined(VBOX_WITH_USB),VBOX_WITH_EHCI,) \
632 $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \
633 $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) \
634 $(if $(VBOX_WITH_VPX),VBOX_WITH_VPX,) \
635 $(if $(VBOX_WITH_PDM_AUDIO_DRIVER),VBOX_WITH_PDM_AUDIO_DRIVER,)
636ifdef VBOX_WITH_CRHGSMI
637 VBoxC_DEFS += VBOX_WITH_CRHGSMI
638endif
639ifdef VBOX_WITH_NETSHAPER
640 VBoxC_DEFS += VBOX_WITH_NETSHAPER
641endif
642VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE
643VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
644VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
645
646VBoxC_SDKS = VBOX_LIBPNG VBOX_ZLIB
647ifdef VBOX_WITH_VPX
648 VBoxC_SDKS += VBOX_VPX
649endif
650ifdef VBOX_WITH_OPENSSL_FIPS
651 VBoxC_SDKS += VBOX_OPENSSL2
652endif
653
654VBoxC_INCS = \
655 include \
656 $(VBoxC_0_OUTDIR) \
657 $(VBOX_MAIN_APIWRAPPER_INCS) \
658 $(dir $(VBOX_XML_SCHEMADEFS_H)) \
659 $(VBOX_MAIN_APIWRAPPER_DIR)/dtrace
660VBoxC_INCS.win = \
661 $(VBoxCOM_0_OUTDIR) \
662 .
663
664VBoxC_LDFLAGS.darwin = \
665 -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxC.dylib \
666 -exported_symbols_list $(VBoxC_0_OUTDIR)/VBoxC.def \
667 -framework IOKit
668VBoxC_LDFLAGS.win += /MANIFEST \
669 /DELAYLOAD:user32.dll
670
671
672VBoxC_LIBS += \
673 $(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) \
674 $(if-expr "$(LIB_VMM)" == "$(VBOX_LIB_VMM_LAZY)",$(LIB_REM),) \
675 $(VBOX_LIB_VMM_LAZY)
676VBoxC_LIBS.win += \
677 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
678ifdef VBOX_WITH_NETFLT
679 VBoxC_LIBS.win += \
680 $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
681 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/newdev.lib \
682 $(PATH_STAGE_LIB)/WinNetConfig$(VBOX_SUFF_LIB) \
683 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
684 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
685 VBoxC_LDFLAGS.win += \
686 /DELAYLOAD:newdev.dll \
687 /DELAYLOAD:setupapi.dll \
688 /DELAYLOAD:iphlpapi.dll
689endif
690
691ifdef VBOX_WITH_CROGL
692 VBoxC_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
693 VBoxC_LDFLAGS.darwin += -framework OpenGL
694endif
695
696ifdef VBOX_WITH_DRAG_AND_DROP
697 VBoxC_LIBS += $(PATH_STAGE_LIB)/VBoxDnDHostR3Lib$(VBOX_SUFF_LIB)
698endif
699
700VBoxC_INTERMEDIATES = \
701 $(VBOX_MAIN_PREREQS) \
702 $(VBOX_XML_SCHEMADEFS_H) \
703 $(VBOX_AUTOGEN_EVENT_H) \
704 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
705
706VBoxC_SOURCES = \
707 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d \
708 src-all/DisplayPNGUtil.cpp \
709 src-all/DisplayResampleImage.cpp \
710 src-all/DisplayUtils.cpp \
711 src-all/EventImpl.cpp \
712 src-all/Global.cpp \
713 src-all/HashedPw.cpp \
714 src-all/Logging.cpp \
715 src-all/PCIDeviceAttachmentImpl.cpp \
716 src-all/ProgressImpl.cpp \
717 src-all/SharedFolderImpl.cpp \
718 src-all/AutoCaller.cpp \
719 src-all/VirtualBoxBase.cpp \
720 src-all/VirtualBoxErrorInfoImpl.cpp \
721 $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
722 src-client/UsbWebcamInterface.cpp \
723 $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \
724 src-client/Nvram.cpp \
725 src-client/AdditionsFacilityImpl.cpp \
726 src-client/BusAssignmentManager.cpp \
727 $(if $(VBOX_WITH_PCI_PASSTHROUGH),src-client/PCIRawDevImpl.cpp,) \
728 src-client/ClientTokenHolder.cpp \
729 src-client/ConsoleImpl.cpp \
730 src-client/ConsoleImpl2.cpp \
731 src-client/ConsoleImplTeleporter.cpp \
732 src-client/ConsoleVRDPServer.cpp \
733 src-client/DisplayImpl.cpp \
734 src-client/DisplayImplLegacy.cpp \
735 src-client/DisplaySourceBitmapImpl.cpp \
736 src-client/EmulatedUSBImpl.cpp \
737 src-client/GuestImpl.cpp \
738 src-client/GuestDirectoryImpl.cpp \
739 src-client/GuestFileImpl.cpp \
740 src-client/GuestFsObjInfoImpl.cpp \
741 src-client/GuestProcessImpl.cpp \
742 src-client/GuestSessionImpl.cpp \
743 src-client/GuestCtrlImpl.cpp \
744 src-client/KeyboardImpl.cpp \
745 src-client/MachineDebuggerImpl.cpp \
746 src-client/MouseImpl.cpp \
747 src-client/RemoteUSBDeviceImpl.cpp \
748 src-client/SessionImpl.cpp \
749 src-client/USBDeviceImpl.cpp \
750 src-client/VBoxDriversRegister.cpp \
751 src-client/VirtualBoxClientImpl.cpp \
752 src-client/VMMDevInterface.cpp \
753 $(VBOX_AUTOGEN_EVENT_CPP) \
754 $(VBOX_XML_SCHEMADEFS_CPP)
755ifdef VBOX_WITH_PDM_AUDIO_DRIVER
756 VBoxC_SOURCES += \
757 ../Devices/Audio/AudioMixBuffer.cpp \
758 ../Devices/Audio/DrvAudioCommon.cpp \
759 src-client/DrvAudioVRDE.cpp
760else
761 VBoxC_SOURCES += \
762 src-client/AudioSnifferInterface.cpp
763endif
764VBoxC_SOURCES.win = \
765 src-client/win/dllmain.cpp \
766 src-client/win/VBoxC.def \
767 src-client/win/VBoxC.rc
768ifdef VBOX_WITH_GUEST_CONTROL
769 VBoxC_SOURCES += \
770 src-client/GuestSessionImplTasks.cpp \
771 src-client/GuestCtrlPrivate.cpp
772endif
773ifdef VBOX_WITH_DRAG_AND_DROP
774 VBoxC_SOURCES += \
775 src-client/GuestDnDPrivate.cpp \
776 src-client/GuestDnDSourceImpl.cpp \
777 src-client/GuestDnDTargetImpl.cpp
778endif
779ifdef VBOX_WITH_XPCOM
780 VBoxC_SOURCES += \
781 src-client/xpcom/module.cpp
782endif
783ifdef VBOX_WITH_HGCM
784 VBoxC_SOURCES += \
785 src-client/HGCMObjects.cpp \
786 src-client/HGCMThread.cpp \
787 src-client/HGCM.cpp
788endif
789ifdef VBOX_WITH_USB
790 VBoxC_SOURCES += \
791 src-client/RemoteUSBBackend.cpp
792endif
793ifdef VBOX_WITH_VPX
794 VBoxC_SOURCES += \
795 src-client/EbmlWriter.cpp \
796 src-client/VideoRec.cpp
797endif
798
799ifeq ($(KBUILD_TARGET),darwin)
800VBoxC_ORDERDEPS += $(VBoxC_0_OUTDIR)/VBoxC.def
801VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxC.def
802$$(VBoxC_0_OUTDIR)/VBoxC.def: $(MAKEFILE_CURRENT)
803 $(RM) -f $@
804 $(APPEND) $@ _NSGetModule
805 $(APPEND) $@ _VBoxDriversRegister
806endif
807
808src-client/ConsoleImpl.cpp_DEFS = \
809 $(if $(VBOX_BLEEDING_EDGE),VBOX_BLEEDING_EDGE=\"$(VBOX_BLEEDING_EDGE)\",) \
810 $(if $(VBOX_WITH_OPENSSL_FIPS), VBOX_OPENSSL_FIPS,)
811
812
813src-client/win/VBoxC.rc_DEPS = $(VBoxC_0_OUTDIR)/VBoxC.rgs $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
814VBoxC_CLEAN.win += $(VBoxC_0_OUTDIR)/VBoxC.rgs
815
816$$(VBoxC_0_OUTDIR)/VBoxC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
817 $(VBOX_XSLTPROC) --stringparam Module VBoxC -o $@ $< $(VBOX_XIDL_FILE)
818
819ifdef VBOX_WITH_32_ON_64_MAIN_API
820 #
821 # 32-bit VBox API Client In-Process module.
822 #
823 # This is currently just a 32-bit version of VBoxC. It might be desirable to
824 # split up VBoxC into a simple client and a VM client part later, in which
825 # case this module will be a simple client.
826 #
827 # Note! One important thing is that the typelib for this DLL must be build
828 # with the /env win32 switch and the VBoxC typelib with /env amd64, if
829 # not they will overwrite each others typelib module entry.
830 #
831 DLLS += VBoxClient-x86
832 VBoxClient-x86_TEMPLATE = VBoxMainComp-x86
833 VBoxClient-x86_EXTENDS = VBoxC
834 VBoxClient-x86_DEFS = VBOX_COM_INPROC_API_CLIENT $(VBoxC_DEFS)
835 VBoxClient-x86_INST.win = $(INST_DLL)x86/
836 VBoxClient-x86_INCS.win = \
837 $(VBoxClient-x86_0_OUTDIR) \
838 $(VBoxCOM-x86_0_OUTDIR) \
839 $(VBoxC_INCS.win)
840 VBoxClient-x86_SOURCES = \
841 src-all/EventImpl.cpp \
842 src-all/Global.cpp \
843 src-all/AutoCaller.cpp \
844 src-all/VirtualBoxBase.cpp \
845 src-all/VirtualBoxErrorInfoImpl.cpp \
846 src-client/ClientTokenHolder.cpp \
847 src-client/SessionImpl.cpp \
848 src-client/VirtualBoxClientImpl.cpp \
849 $(VBOX_AUTOGEN_EVENT_CPP) \
850 $(VBOX_XML_SCHEMADEFS_CPP)
851 VBoxClient-x86_SOURCES.win = \
852 src-client/win/dllmain.cpp \
853 src-client/win/VBoxClient-x86.def \
854 src-client/win/VBoxClient-x86.rc
855 ifdef VBOX_WITH_XPCOM
856 VBoxClient-x86_SOURCES += \
857 src-client/xpcom/module.cpp
858 endif
859 VBoxClient-x86_LIBS = \
860 $(PATH_STAGE_LIB)/VBoxAPIWrap-x86$(VBOX_SUFF_LIB)
861 VBoxClient-x86_LIBS.win = $(NO_SUCH_VARIABLE)
862 VBoxClient-x86_LIBS.win.x86 = $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/delayimp.lib
863 VBoxClient-x86_CLEAN.win += $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs
864 src-client/win/VBoxClient-x86.rc_DEPS = \
865 $(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs \
866 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb
867
868 $$(VBoxClient-x86_0_OUTDIR)/VBoxClient-x86.rgs: \
869 $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl \
870 $(VBOX_XIDL_FILE) | $$(dir $$@)
871 $(VBOX_XSLTPROC) --stringparam Module VBoxC -o $@ $< $(VBOX_XIDL_FILE)
872
873endif
874
875
876#
877# VBoxCOM - COM Abstraction Layer library
878#
879LIBRARIES += VBoxCOM
880VBoxCOM_TEMPLATE = VBoxMainLib
881VBoxCOM_INTERMEDIATES = $(VBOX_MAIN_PREREQS) \
882 $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
883VBoxCOM_SOURCES = \
884 glue/com.cpp \
885 glue/initterm.cpp \
886 glue/string.cpp \
887 glue/AutoLock.cpp \
888 glue/EventQueue.cpp \
889 glue/NativeEventQueue.cpp \
890 glue/ErrorInfo.cpp \
891 glue/errorprint.cpp
892VBoxCOM_INCS += $(VBOX_MAIN_APIWRAPPER_INCS) \
893 include
894ifeq ($(KBUILD_TARGET),win)
895 VBoxCOM_DEFS.x86 = _WIN32_WINNT=0x0500
896 VBoxCOM_DEFS.amd64 = _WIN32_WINNT=0x0510
897 VBoxCOM_SOURCES += \
898 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c
899else # !win
900 VBoxCOM_SOURCES += \
901 $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c \
902 glue/xpcom/helpers.cpp
903endif # !win
904
905glue/com.cpp_DEFS = \
906 $(if $(VBOX_BLEEDING_EDGE),VBOX_BLEEDING_EDGE=\"$(VBOX_BLEEDING_EDGE)\",) \
907 KBUILD_TYPE=\"$(KBUILD_TYPE)\"
908
909# 32-bit version of VBoxCOM.
910ifdef VBOX_WITH_32_ON_64_MAIN_API
911 LIBRARIES += VBoxCOM-x86
912 VBoxCOM-x86_TEMPLATE = VBoxMainLib-x86
913 VBoxCOM-x86_EXTENDS = VBoxCOM
914endif
915
916
917
918#
919# The VBoxExtPackHelperApp.
920#
921ifdef VBOX_WITH_EXTPACK
922 PROGRAMS += VBoxExtPackHelperApp
923 VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot
924 VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security
925 VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows
926 VBoxExtPackHelperApp_SOURCES = \
927 src-helper-apps/VBoxExtPackHelperApp.cpp \
928 src-all/ExtPackUtil.cpp
929 VBoxExtPackHelperApp_SOURCES.win = \
930 src-helper-apps/VBoxExtPackHelperApp.rc
931 VBoxExtPackHelperApp_LIBS = \
932 $(LIB_RUNTIME)
933endif # VBOX_WITH_EXTPACK
934
935#
936# VolInfo
937#
938ifdef VBOX_WITH_DEVMAPPER
939 PROGRAMS.linux += VBoxVolInfo
940 VBoxVolInfo_TEMPLATE = VBoxR3SetUidToRoot
941 VBoxVolInfo_SOURCES = src-helper-apps/VBoxVolInfo.cpp
942 VBoxVolInfo_LIBS = devmapper
943endif
944
945endif # !VBOX_ONLY_SDK (the ifndef is far above)
946
947
948#
949# Installs com related thing(s) to bin.
950#
951INSTALLS.win += VBoxMain-com-inst
952VBoxMain-com-inst_INST = $(INST_BIN)
953VBoxMain-com-inst_MODE = a+r,u+w
954VBoxMain-com-inst_SOURCES = src-all/win/comregister.cmd
955
956
957if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "linux"
958 #
959 # Installs linux/hardening related things to components.
960 #
961 INSTALLS.linux += VBoxMain-hardening-inst
962 VBoxMain-hardening-inst_INST = $(INST_BIN)components/
963 VBoxMain-hardening-inst_SYMLINKS = \
964 VBoxDDU.so=>../VBoxDDU.so \
965 VBoxREM.so=>../VBoxREM.so \
966 VBoxRT.so=>../VBoxRT.so \
967 VBoxVMM.so=>../VBoxVMM.so \
968 VBoxXPCOM.so=>../VBoxXPCOM.so
969endif
970
971
972if defined(VBOX_WITH_MIDL_PROXY_STUB) && "$(KBUILD_TARGET)" == "win"
973 #
974 # Experimental COM proxy + stub DLL.
975 #
976 DLLS += VBoxProxyStub
977 VBoxProxyStub_TEMPLATE = VBOXMAINCOMP
978 VBoxProxyStub_DEFS = REGISTER_PROXY_DLL
979 VBoxProxyStub_DEFS.win.x86 = WIN32
980 VBoxProxyStub_SOURCES = \
981 $(VBoxCOM_0_OUTDIR)/dlldata.c \
982 $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c \
983 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
984 src-all/win/VBoxProxyStub.def
985
986 ifdef VBOX_WITH_32_ON_64_MAIN_API
987 DLLS += VBoxProxyStub-x86
988 VBoxProxyStub-x86_TEMPLATE = VBoxMainComp-x86
989 VBoxProxyStub-x86_DEFS = REGISTER_PROXY_DLL
990 VBoxProxyStub-x86_DEFS.win.x86 = WIN32
991 VBoxProxyStub-x86_SOURCES = \
992 $(VBoxCOM-x86_0_OUTDIR)/dlldata.c \
993 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c \
994 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
995 src-all/win/VBoxProxyStub.def
996 endif
997endif
998
999
1000
1001# generate rules
1002include $(FILE_KBUILD_SUB_FOOTER)
1003
1004
1005
1006#
1007# Additions rules.
1008#
1009
1010## @todo this hack ain't cutting it any longer. (the file name is abspath'ed since ages now.)
1011glue/xpcom/helpers.cpp: $(VBOX_IDL_TYPELIB.XPCOM)
1012
1013$(VBOX_IDL_FILE.XPCOM): $(VBOX_PATH_MAIN_SRC)/idl/xpidl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1014 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1015 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
1016
1017$(VBOX_IDL_TYPELIB.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1018 $(call MSG_TOOL,xpidl,VBoxSVC,$<,$@)
1019 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m typelib -I $(VBOX_PATH_XPCOM_IDL) -e $@ $<
1020 $(CHMOD) 0644 $@
1021## @todo ^^^^^^^^^^^^ fix horrible hack
1022
1023$(VBOX_IDL_HEADER.XPCOM): $(VBOX_IDL_FILE.XPCOM) | $$(dir $$@) $(VBOX_XPIDL)
1024 $(call MSG_TOOL,xpidl,VBoxSVC,$<,$@)
1025 $(QUIET)$(VBOX_XPIDL_ENV)$(VBOX_XPIDL) -m header -I $(VBOX_PATH_XPCOM_IDL) -e $@ $<
1026
1027$(VBOX_IDL_FILE.MSCOM): $(VBOX_PATH_MAIN_SRC)/idl/midl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1028 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1029 $(QUIET)$(VBOX_XSLTPROC) -o $@ $(if $(VBOX_WITH_MIDL_PROXY_STUB),-stringparam g_fGenProxy yes,) $< $(VBOX_XIDL_FILE)
1030
1031# Aliases for testing purposes.
1032ifdef VBOX_WITH_XPCOM
1033testidl: $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c
1034testidlhdr: $(VBOX_IDL_HEADER.XPCOM)
1035else
1036testidl: $(VBOX_IDL_FILE.MSCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1037 $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c,)
1038endif
1039
1040
1041$(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c: $(VBOX_PATH_MAIN_SRC)/idl/xpidl_iid.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
1042 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
1043 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
1044
1045$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
1046+ $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
1047$(if $(VBOX_WITH_MIDL_PROXY_STUB),+ $(VBoxCOM_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM_0_OUTDIR)/dlldata.c,) \
1048+ $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1049 $(VBOX_WIN_MIDL) /nologo \
1050 $(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64" && "$(KBUILD_HOST)" == "win",/env amd64,/env win32) \
1051 /robust /protocol all /target NT51 \
1052 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM_0_OUTDIR)) \
1053 /cpp_cmd $(subst $(EXEC_X86_WIN32),,$(call VBOX_FN_MAKE_WIN_PATH,$(TOOL_$(VBOX_VCC_TOOL)_CC))) \
1054 /I $(call VBOX_FN_MAKE_WIN_PATH,$(PATH_SDK_$(VBOX_WINPSDK)_INC)) \
1055 /I idl \
1056 $(call VBOX_FN_MAKE_WIN_PATH,$<)
1057
1058$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c \
1059+ $(VBoxCOM-x86_0_OUTDIR)/VirtualBox.h \
1060$(if $(VBOX_WITH_MIDL_PROXY_STUB),+ $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c + $(VBoxCOM-x86_0_OUTDIR)/dlldata.c,) \
1061+ $(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
1062 $(VBOX_WIN_MIDL) /nologo /env win32 /target NT51 \
1063 /robust /protocol all \
1064 /out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)) \
1065 /tlb $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox-x86.tlb) \
1066 /cpp_cmd $(subst $(EXEC_X86_WIN32),,$(call VBOX_FN_MAKE_WIN_PATH,$(TOOL_$(VBOX_VCC_TOOL_STEM)X86_CC))) \
1067 /I $(call VBOX_FN_MAKE_WIN_PATH,$(PATH_SDK_$(VBOX_WINPSDK)_INC)) \
1068 /I idl \
1069 $(call VBOX_FN_MAKE_WIN_PATH,$<)
1070
1071#
1072# Translation stuff
1073#
1074VBoxSVC_VBOX_HEADERS = \
1075 include/collection.h \
1076 include/MachineImpl.h
1077VBoxSVC_VBOX_TRANSLATIONS = \
1078 nls/VBoxSVC_de.ts
1079
1080VBoxC_VBOX_HEADERS = \
1081 include/ConsoleImpl.h
1082
1083VBoxC_VBOX_INTERMEDIATES = $(VBOX_MAIN_APIWRAPPER_GEN_HDRS)
1084VBoxC_VBOX_HEADERS += $(VBOX_MAIN_APIWRAPPER_INCS)
1085
1086VBoxC_VBOX_TRANSLATIONS = \
1087 nls/VBoxC_de.ts
1088
1089ifdef VBOX_WITH_JMSCOM
1090
1091#
1092# Java glue JAR files
1093#
1094VBOX_JMSCOM_JAR = $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
1095VBOX_JMSCOM_TARGET := $(PATH_TARGET)/vboxjmscom-gen
1096VBOX_JMSCOM_GEN = $(VBOX_JMSCOM_TARGET)/jmscomgen
1097VBOX_JMSCOM_JDEST := $(VBOX_JMSCOM_TARGET)/jdest
1098VBOX_GLUE_XSLT_DIR := $(PATH_ROOT)/src/VBox/Main/glue
1099VBOX_JACOB_DIR := $(PATH_ROOT)/src/libs/jacob-1.17
1100
1101INSTALLS += VBoxJMscom-inst-jar
1102VBoxJMscom-inst-jar_INST = $(INST_SDK)bindings/mscom/java/
1103VBoxJMscom-inst-jar_MODE = a+r,u+w
1104VBoxJMscom-inst-jar_SOURCES = \
1105 $(VBOX_JMSCOM_JAR)
1106VBoxJMscom-inst-jar_CLEAN = \
1107 $(VBOX_JMSCOM_JAR) \
1108 $(VBOX_JMSCOM_GEN)/jmscomglue.list \
1109 $(wildcard \
1110 $(VBOX_JMSCOM_GEN)/java/*.java \
1111 $(VBOX_JMSCOM_JDEST)/*.class \
1112 $(VBOX_JMSCOM_JDEST)/*/*.class \
1113 $(VBOX_JMSCOM_JDEST)/*/*/*.class \
1114 $(VBOX_JMSCOM_JDEST)/*/*/*/*.class \
1115 )
1116VBoxJMscom-inst-jar_BLDDIRS += $(VBOX_JMSCOM_GEN)/java
1117
1118$(VBOX_JMSCOM_GEN)/jmscomglue.list: \
1119 $(VBOX_XIDL_FILE) \
1120 $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl \
1121 $(VBOX_FILESPLIT) \
1122 | $(VBOX_JMSCOM_GEN)/java/
1123 $(call MSG_L1,Generating Java MSCOM glue files from XIDL)
1124 $(QUIET)$(RM) -f $(wildcard $(VBOX_JMSCOM_GEN)/java/*.java)
1125 $(QUIET)$(VBOX_XSLTPROC) \
1126 --stringparam filelistonly "" \
1127 --stringparam G_vboxApiSuffix $(VBOX_API_SUFFIX) \
1128 --stringparam G_vboxGlueStyle mscom \
1129 --stringparam G_vboxDirPrefix "" \
1130 -o $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl $<
1131 $(QUIET)$(VBOX_FILESPLIT) $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_JMSCOM_GEN)/java
1132 $(QUIET)echo $(VBOX_JMSCOM_GEN)/java/*.java > $@
1133
1134$$(VBOX_JMSCOM_JAR): $(VBOX_JMSCOM_GEN)/jmscomglue.list | $$(dir $$@)
1135 $(call MSG_TOOL,javac,$(notdir $@),jmscomglue.list,)
1136 $(QUIET)$(RM) -Rf $(VBOX_JMSCOM_JDEST)
1137 $(QUIET)$(MKDIR) -p $(VBOX_JMSCOM_JDEST)
1138 $(call MSG_TOOL,javac,$(notdir $@),...,)
1139 $(QUIET)$(VBOX_JAVAC) $(VBOX_JAVAC_OPTS) @$(VBOX_JMSCOM_GEN)/jmscomglue.list \
1140 -d $(VBOX_JMSCOM_JDEST) -classpath "$(VBOX_JMSCOM_JDEST)$(VBOX_SEP)$(VBOX_JACOB_DIR)/jacob.jar"
1141 $(call MSG_LINK,$(notdir $@),$@)
1142 $(QUIET)$(VBOX_JAR) cf $@ -C $(VBOX_JMSCOM_JDEST) .
1143
1144## @todo compile TestVBox.java (see below) to have sanity checking
1145
1146endif # VBOX_WITH_JMSCOM
1147
1148#
1149# Install Java glue sample code.
1150#
1151INSTALLS += javagluesample
1152javagluesample_INST = $(INST_SDK)bindings/glue/java/
1153javagluesample_MODE = a+r,u+w
1154javagluesample_SOURCES = \
1155 $(VBOX_PATH_MAIN_SRC)/glue/tests/TestVBox.java=>TestVBox.java \
1156 $(VBOX_PATH_MAIN_SRC)/glue/tests/Makefile=>Makefile
1157
1158#
1159# Rules associated with VBoxAPIWrap (in typical invocation order).
1160# We keep them down here to simplify the use of VBoxAPIWrap_0_OUTDIR.
1161#
1162
1163# Generate a make include file which lists the wrapper header and source files.
1164$(VBoxAPIWrap_VBOX_KMK_FILE).ts \
1165+| $(VBoxAPIWrap_VBOX_KMK_FILE): \
1166 $(VBOX_XIDL_FILE) \
1167 $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl \
1168 $(VBOX_PATH_MAIN_SRC)/Makefile.kmk
1169 $(call MSG_GENERATE,,$(VBoxAPIWrap_VBOX_KMK_FILE))
1170 $(QUIET)$(RM) -f $@
1171 $(QUIET)$(MKDIR) -p $(@D)
1172 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1173 -o $@ $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server-filelist.xsl $<
1174 $(QUIET)$(CP) --changed -fv $@ $(VBoxAPIWrap_VBOX_KMK_FILE)
1175
1176# Generate the header files for the wrappers.
1177$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1178+| $(VBOX_MAIN_APIWRAPPER_GEN_HDRS): \
1179 $(VBOX_XIDL_FILE) \
1180 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1181 $(VBoxAPIWrap_VBOX_XSLT) \
1182 $(VBOX_FILESPLIT) \
1183 | $$(dir $$@)
1184 $(call MSG_L1,Generating C++ Server API wrapper header files from XIDL)
1185 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_HDRS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h))
1186 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1187 --stringparam generating "headers" \
1188 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $<
1189 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1190
1191# Generate the DTrace probes for the wrappers and combine them with handcoded probes.
1192$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1193+| $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d: \
1194 $(VBOX_XIDL_FILE) \
1195 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1196 $(VBoxAPIWrap_VBOX_XSLT) \
1197 $(VBOX_FILESPLIT) \
1198 | $$(dir $$@)
1199 $(call MSG_L1,Generating DTrace Provider for the VBox API (from XIDL))
1200 $(QUIET)$(RM) -f -- "$@" "[email protected]"
1201 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1202 --stringparam generating "dtrace-probes" \
1203 -o "$@" $(VBoxAPIWrap_VBOX_XSLT) $<
1204 $(QUIET)$(SED) -e '' -o "[email protected]" \
1205 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-start.d" \
1206 "$@" \
1207 "$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-end.d"
1208 $(QUIET)$(MV) -- "[email protected]" "$@"
1209 $(QUIET)$(CP) --changed -fv -- "$@" "$(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d"
1210
1211# Generate the wrapper source files - split in two due to long processing time
1212$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even \
1213+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_EVEN): \
1214 $(VBOX_XIDL_FILE) \
1215 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1216 $(VBoxAPIWrap_VBOX_XSLT) \
1217 $(VBOX_FILESPLIT) \
1218 | $$(dir $$@)
1219 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 1)
1220 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1221 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1222 --stringparam generating "sources" \
1223 --param reminder 0 \
1224 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $<
1225 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1226
1227$(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1228+| $(VBOX_MAIN_APIWRAPPER_GEN_SRCS_ODD): \
1229 $(VBOX_XIDL_FILE) \
1230 $(VBOX_PATH_MAIN_SRC)/idl/typemap-shared.inc.xsl \
1231 $(VBoxAPIWrap_VBOX_XSLT) \
1232 $(VBOX_FILESPLIT) \
1233 | $$(dir $$@)
1234 $(call MSG_L1,Generating C++ Server API wrapper files from XIDL - part 2)
1235 $(QUIET)$(RM) -f -- $(filter-out $(VBOX_MAIN_APIWRAPPER_GEN_SRCS), $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp))
1236 $(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
1237 --stringparam generating "sources" \
1238 --param reminder 1 \
1239 -o $@ $(VBoxAPIWrap_VBOX_XSLT) $<
1240 $(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxAPIWrap_0_OUTDIR)
1241
1242testapiwrappers:: \
1243 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-headers \
1244 $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
1245 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-odd \
1246 $(VBoxAPIWrap_0_OUTDIR)/apiwrappers-sources-even
1247
1248
1249#
1250# NLS stuff.
1251#
1252updatenls::
1253 $(VBOX_LUPDATE) $(VBoxSVC_SOURCES) $(VBoxSVC_VBOX_HEADERS) -ts $(VBoxSVC_VBOX_TRANSLATIONS)
1254 $(VBOX_LUPDATE) $(VBoxC_SOURCES) $(VBoxC_VBOX_HEADERS) -ts $(VBoxC_VBOX_TRANSLATIONS)
1255
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