VirtualBox

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

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

Assorted fixes for FreeBSD hosts, VBox compiles and runs again without further patches (tested on 10.1 amd64 )

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