VirtualBox

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

Last change on this file since 8709 was 8709, checked in by vboxsync, 17 years ago

Added a setErrorNoLog method and aLogIt argument to the core setError methods (defaults to true) so that we can get rid of the disturbing release log errors caused by the USB drop down menu in the GUI.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 18.3 KB
Line 
1# $Id: Makefile.kmk 8709 2008-05-08 13:43:21Z vboxsync $
2## @file
3# Makefile for the VBox Main module.
4#
5
6#
7# Copyright (C) 2006-2007 Sun Microsystems, Inc.
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.215389.xyz. 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# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18# Clara, CA 95054 USA or visit http://www.sun.com if you need
19# additional information or have any questions.
20#
21
22DEPTH = ../../..
23include $(PATH_KBUILD)/subheader.kmk
24
25# Include sub-makefile(s) first if we're doing parallel building.
26# This is primarily a hack to try avoid idling all but one cpu when
27# building the gigant soap sources.
28ifneq ($(KMK_OPTS_JOBS),1)
29 ifdef VBOX_WITH_WEBSERVICES
30 include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
31 endif
32 include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
33endif
34
35# targets++
36LIBRARIES += VBoxCOM
37DLLS += VBoxSettings VBoxC
38PROGRAMS += VBoxSVC
39VBOX_MAIN_DEFS =
40ifneq ($(BUILD_TARGET),win)
41 ifndef VBOX_WITH_XPCOM
42 $(error "VBox: VBOX_WITH_XPCOM isn't defined")
43 endif
44 DLLS += VBoxSVCM
45 ifneq ($(BUILD_TARGET),os2)
46 VBOX_MAIN_DEFS+= VBOX_WITH_SYS_V_IPC_SESSION_WATCHER
47 endif
48 VBOX_MAIN_DEFS += VBOX_WITH_UNIXY_TAP_NETWORKING
49endif
50if1of ($(KBUILD_TARGET), linux freebsd solaris)
51 VBOX_MAIN_DEFS += VBOX_MAIN_USE_SEMRW
52else
53 ifneq ($(VBOX_VERSION_MAJOR)$(VBOX_VERSION_MINOR)$(VBOX_VERSION_BUILD),160)
54 VBOX_MAIN_DEFS += VBOX_MAIN_AUTOLOCK_TRAP
55 endif
56endif
57
58## @todo eliminate or expand VBOX_MAIN_DEFS.
59
60#PROGRAMS += tstCFGLdr
61
62ifeq ($(BUILD_TARGET),win)
63 OTHERS += $(PATH_BIN)/comregister.cmd
64 IDLFILE = $(VBOX_PATH_SDK)/idl/VirtualBox.idl
65 OTHER_CLEAN += \
66 $(PATH_BIN)/comregister.cmd \
67 $(VBOX_PATH_SDK)/include/VirtualBox.h \
68 $(IDLFILE) \
69 $(VBOX_PATH_SDK)/lib/VirtualBox.tlb \
70 $(VBOX_PATH_SDK)/lib/VirtualBox_i.c \
71 $(PATH_VBoxCOM)/VirtualBox.h \
72 $(PATH_VBoxCOM)/VirtualBox_i.c \
73 $(PATH_VBoxCOM)/VirtualBox.tlb
74else
75 INSTALLS += xpcom-components
76 IDLFILE = $(VBOX_PATH_SDK)/idl/VirtualBox_XPCOM.idl
77 ifeq ($(BUILD_TARGET),linux)
78 IDLTYPELIB = $(PATH_BIN)/VirtualBox_XPCOM.xpt
79 else
80 IDLTYPELIB = $(PATH_BIN)/components/VirtualBox_XPCOM.xpt
81 endif
82 IDLHEADER = $(VBOX_PATH_SDK)/include/VirtualBox_XPCOM.h
83 OTHERS += $(IDLTYPELIB)
84 OTHER_CLEAN += \
85 $(IDLFILE) \
86 $(IDLHEADER) \
87 $(IDLTYPELIB)
88
89endif
90
91
92#
93# The Main API documentation
94#
95docs: $(PATH_TARGET)/docs.Main
96
97$(PATH_TARGET)/docs.Main: \
98 Doxyfile.Main \
99 idl/doxygen.xsl \
100 idl/VirtualBox.xidl \
101 | $(call DIRDEP, $(PATH_TARGET)) \
102 $(call DIRDEP, $(PATH_OUT)/docs/Main)
103 $(RM) -f $(wildcard $(PATH_OUT)/docs/Main/html/*)
104 $(VBOX_XSLTPROC) -o $(PATH_TARGET)/VirtualBox.idl idl/doxygen.xsl idl/VirtualBox.xidl
105 $(REDIRECT) -E 'PATH_OUT=$(PATH_OUT)' -E 'PATH_TARGET=$(PATH_TARGET)' -E 'PATH_CHM=$(subst /,\,$(PATH_BIN)/VirtualBoxAPI.chm)' \
106 -- doxygen Doxyfile.Main
107 -$(EXEC_X86_WIN32) $(VBOX_PATH_HTML_HELP_WORKSHOP)/hhc.exe $(subst /,\\,$(PATH_OUT)/docs/Main/html/index.hhp)
108 $(APPEND) $(PATH_TARGET)/docs.Main
109
110$(call DIRDEP, $(PATH_OUT)/docs/Main):
111 $(MKDIR) -p $@
112
113
114#
115# VBoxSVC executable
116#
117VBoxSVC_TEMPLATE = VBOXMAINEXE
118VBoxSVC_DEFS = VBOX_MAIN_SETTINGS_ADDONS $(VBOX_MAIN_DEFS)
119ifdef VBOX_WITH_VRDP
120VBoxSVC_DEFS += VBOX_VRDP
121endif
122ifdef VBOX_WITH_HGCM
123VBoxSVC_DEFS += VBOX_HGCM
124endif
125ifdef VBOX_MAIN_RELEASE_LOG
126VBoxSVC_DEFS += VBOX_MAIN_RELEASE_LOG LOG_ENABLED
127endif
128ifdef VBOX_WITH_USB
129VBoxSVC_DEFS += VBOX_WITH_USB
130 ifdef VBOX_WITH_EHCI
131VBoxSVC_DEFS += VBOX_WITH_EHCI
132 endif
133 ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
134VBoxSVC_DEFS += VBOX_WITH_NEW_USB_CODE_ON_DARWIN
135 endif
136endif
137ifdef VBOX_WITH_ALSA
138VBoxSVC_DEFS += VBOX_WITH_ALSA
139endif
140ifdef VBOX_WITH_PULSE
141VBoxSVC_DEFS += VBOX_WITH_PULSE
142endif
143ifdef VBOX_WITH_WINMM
144VBoxSVC_DEFS += VBOX_WITH_WINMM
145endif
146ifdef VBOX_WITH_E1000
147VBoxSVC_DEFS += VBOX_WITH_E1000
148endif
149ifdef VBOX_WITH_AHCI
150VBoxSVC_DEFS += VBOX_WITH_AHCI
151endif
152ifdef VBOX_WITHOUT_LINUX_COMPILER_H
153VBoxSVC_DEFS += VBOX_WITHOUT_LINUX_COMPILER_H
154endif
155
156VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE
157VBoxSVC_DEFS.win.x86 += _WIN32_WINNT=0x0500
158VBoxSVC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
159VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
160VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
161
162VBoxSVC_INCS = \
163 include \
164 $(PATH_VBoxSVC) \
165 $(PATH_CURRENT)
166VBoxSVC_INCS.win = \
167 $(PATH_VBoxCOM)
168ifdef VBOX_WITH_USB
169 VBoxSVC_INCS.os2 = \
170 $(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
171endif
172
173VBoxSVC_LIBS += \
174 $(LIB_DDU) \
175 $(LIB_SETTINGS)
176VBoxSVC_LIBS.darwin = \
177 $(LIB_VMM) \
178 $(LIB_REM)
179VBoxSVC_LIBS.solaris = \
180 adm \
181 devinfo
182
183VBoxSVC_SOURCES = \
184 Logging.cpp \
185 AutoLock.cpp \
186 Matching.cpp \
187 VirtualBoxBase.cpp \
188 VirtualBoxErrorInfoImpl.cpp \
189 VirtualBoxImpl.cpp \
190 VirtualBoxImplExtra.cpp \
191 MachineImpl.cpp \
192 SnapshotImpl.cpp \
193 HardDiskImpl.cpp \
194 HardDiskAttachmentImpl.cpp \
195 ProgressImpl.cpp \
196 DVDDriveImpl.cpp \
197 DVDImageImpl.cpp \
198 FloppyDriveImpl.cpp \
199 FloppyImageImpl.cpp \
200 HostImpl.cpp \
201 HostDVDDriveImpl.cpp \
202 HostFloppyDriveImpl.cpp \
203 GuestOSTypeImpl.cpp \
204 NetworkAdapterImpl.cpp \
205 SerialPortImpl.cpp \
206 ParallelPortImpl.cpp \
207 USBControllerImpl.cpp \
208 SATAControllerImpl.cpp \
209 AudioAdapterImpl.cpp \
210 SharedFolderImpl.cpp \
211 SystemPropertiesImpl.cpp \
212 BIOSSettingsImpl.cpp
213
214ifdef VBOX_WITH_VRDP
215VBoxSVC_SOURCES += VRDPServerImpl.cpp
216endif
217
218VBoxSVC_SOURCES.darwin = \
219 darwin/iokit.cpp
220
221VBoxSVC_SOURCES.win = \
222 HostNetworkInterfaceImpl.cpp \
223 win32/svcmain.cpp \
224 win32/svchlp.cpp \
225 win32/VBoxSVC.rc
226
227VBoxSVC_SOURCES.linux = \
228 linux/vbox-libhal.cpp
229
230VBoxSVC_SOURCES.solaris = \
231 linux/vbox-libhal.cpp
232
233ifdef VBOX_WITH_XPCOM
234VBoxSVC_SOURCES += \
235 linux/server.cpp
236endif
237
238ifdef VBOX_WITH_USB
239VBoxSVC_SOURCES += \
240 USBDeviceFilterImpl.cpp \
241 USBProxyService.cpp \
242 HostUSBDeviceImpl.cpp
243VBoxSVC_SOURCES.darwin += darwin/USBProxyServiceDarwin.cpp
244VBoxSVC_SOURCES.linux += linux/USBProxyServiceLinux.cpp
245VBoxSVC_SOURCES.os2 += os2/USBProxyServiceOs2.cpp
246VBoxSVC_SOURCES.solaris += solaris/USBProxyServiceSolaris.cpp
247VBoxSVC_SOURCES.win += win32/USBProxyServiceWin32.cpp
248endif
249
250VBoxSVC_LDFLAGS.darwin = -framework IOKit
251ifeq ($(BUILD_TYPE),debug)
252VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
253endif
254
255win32/VBoxSVC.rc_DEPS = $(PATH_TARGET)/VBoxSVC.rgs
256
257
258#
259# VBoxSVC wrapper module
260#
261ifdef VBOX_WITH_XPCOM
262
263VBoxSVCM_TEMPLATE = VBOXMAINDLL
264ifneq ($(BUILD_TARGET),linux)
265VBoxSVCM_INST = $(INST_BIN)components/
266endif
267VBoxSVCM_DEFS = IN_RING3 $(VBOX_MAIN_DEFS)
268VBoxSVCM_INCS = \
269 include \
270 $(PATH_VBoxC) \
271 $(PATH_CURRENT)
272VBoxSVCM_SOURCES = \
273 linux/server_module.cpp
274ifdef VBOX_WITH_ORIGIN
275VBoxSVCM_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$$(VBOX_ORIGIN)/..'
276endif
277VBoxSVCM_LDFLAGS.darwin = \
278 -install_name @executable_path/components/VBoxSVCM.dylib \
279 -exported_symbols_list $(PATH_TARGET)/VBoxSVCM.def
280ifeq ($(BUILD_TARGET),darwin)
281VBoxSVCM_ORDERDEPS += $(PATH_TARGET)/VBoxSVCM.def
282VBoxSVCM_CLEAN += $(PATH_TARGET)/VBoxSVCM.def
283$(PATH_TARGET)/VBoxSVCM.def:
284 $(RM) -f $@
285 $(APPEND) $@ _NSGetModule
286endif
287
288endif # VBOX_WITH_XPCOM
289
290
291#
292# VBoxC module
293#
294VBoxC_TEMPLATE = VBOXMAINDLL
295ifneq ($(filter-out linux win,$(BUILD_TARGET)),)
296VBoxC_INST = $(INST_BIN)components/
297endif
298
299VBoxC_DEFS = IN_RING3 $(VBOX_MAIN_DEFS)
300VBoxC_DEFS += VBOX_COM_INPROC
301
302ifdef VBOX_WITH_VRDP
303VBoxC_DEFS += VBOX_VRDP
304endif
305ifdef VBOX_WITH_HGCM
306VBoxC_DEFS += VBOX_HGCM
307endif
308ifdef VBOX_MAIN_RELEASE_LOG
309VBoxC_DEFS += VBOX_MAIN_RELEASE_LOG LOG_ENABLED
310endif
311ifdef VBOX_WITH_USB
312VBoxC_DEFS += VBOX_WITH_USB
313ifdef VBOX_WITH_EHCI
314VBoxC_DEFS += VBOX_WITH_EHCI
315endif
316endif
317ifdef VBOX_WITH_ALSA
318VBoxC_DEFS += VBOX_WITH_ALSA
319endif
320ifdef VBOX_WITH_PULSE
321VBoxC_DEFS += VBOX_WITH_PULSE
322endif
323ifdef VBOX_WITH_WINMM
324VBoxC_DEFS += VBOX_WITH_WINMM
325endif
326ifdef VBOX_WITH_CROSSBOW
327VBoxC_DEFS += VBOX_WITH_CROSSBOW
328endif
329ifdef VBOX_WITH_E1000
330VBoxC_DEFS += VBOX_WITH_E1000
331endif
332
333VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
334VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
335
336VBoxC_INCS = \
337 include \
338 $(PATH_VBoxC)
339VBoxC_INCS.win = \
340 $(PATH_VBoxCOM) \
341 $(PATH_SUB_CURRENT)
342
343ifdef VBOX_WITH_ORIGIN
344VBoxC_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$$(VBOX_ORIGIN)/..'
345endif
346VBoxC_LDFLAGS.darwin = \
347 -install_name @executable_path/components/VBoxSVCM.dylib \
348 -exported_symbols_list $(PATH_TARGET)/VBoxC.def
349ifdef VBOX_USE_VCC80
350 VBoxC_LDFLAGS.win = /MANIFEST
351endif
352
353VBoxC_LIBS += \
354 $(LIB_VMM) \
355 $(LIB_REM)
356
357VBoxC_SOURCES = \
358 Logging.cpp \
359 AutoLock.cpp \
360 VBoxDll.cpp \
361 Version.cpp \
362 USBDeviceImpl.cpp \
363 RemoteUSBDeviceImpl.cpp \
364 VirtualBoxBase.cpp \
365 VirtualBoxErrorInfoImpl.cpp \
366 ProgressImpl.cpp \
367 SharedFolderImpl.cpp \
368 SessionImpl.cpp \
369 ConsoleImpl.cpp \
370 ConsoleImpl2.cpp \
371 ConsoleVRDPServer.cpp \
372 GuestImpl.cpp \
373 KeyboardImpl.cpp \
374 MouseImpl.cpp \
375 DisplayImpl.cpp \
376 FramebufferImpl.cpp \
377 MachineDebuggerImpl.cpp \
378 VBoxDriversRegister.cpp \
379 AudioSnifferInterface.cpp \
380 VMMDevInterface.cpp
381VBoxC_SOURCES.win = \
382 win32/dllmain.cpp \
383 win32/VBoxC.def \
384 win32/VBoxC.rc
385ifdef VBOX_WITH_XPCOM
386VBoxC_SOURCES += \
387 linux/module.cpp
388endif
389
390ifdef VBOX_WITH_HGCM
391VBoxC_SOURCES += \
392 hgcm/HGCMObjects.cpp \
393 hgcm/HGCMThread.cpp \
394 hgcm/HGCM.cpp
395endif
396
397ifdef VBOX_WITH_USB
398VBoxC_SOURCES += \
399 RemoteUSBBackend.cpp
400endif
401
402ifeq ($(BUILD_TARGET),darwin)
403VBoxC_ORDERDEPS += $(PATH_TARGET)/VBoxC.def
404VBoxC_CLEAN += $(PATH_TARGET)/VBoxC.def
405$(PATH_TARGET)/VBoxC.def: $(MAKEFILE_CURRENT)
406 $(RM) -f $@
407 $(APPEND) $@ _NSGetModule
408 $(APPEND) $@ _VBoxDriversRegister
409endif
410
411# Version.cpp uses VBOX_SVN_REV.
412Version.cpp_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
413Version.cpp_DEPS = $(VBOX_SVN_REV_KMK)
414
415ConsoleImpl.cpp_DEFS = VBOX_BUILD_TARGET=\"$(BUILD_TARGET).$(BUILD_TARGET_ARCH)\"
416
417win32/VBoxC.rc_DEPS = $(PATH_TARGET)/VBoxC.rgs $(PATH_VBoxCOM)/VirtualBox.tlb
418
419
420#
421# VBoxSettings
422#
423VBoxSettings_TEMPLATE = VBOXMAINDLL
424VBoxSettings_NAME = $(basename $(notdir $(LIB_SETTINGS)))
425VBoxSettings_SDKS = VBOX_LIBXSLT VBOX_LIBXML2 VBOX_ZLIB
426VBoxSettings_DEFS = IN_VBOXSETTINGS_R3
427VBoxSettings_INCS = \
428 include \
429 $(PATH_TARGET)
430VBoxSettings_SOURCES = \
431 xml/Settings.cpp
432VBoxSettings_LDFLAGS.darwin = -install_name @executable_path/$(notdir $(LIB_SETTINGS)) -Wl,-x # no debug info please.
433
434
435#
436# VBoxCOM - COM Abstraction Layer library
437#
438VBoxCOM_TEMPLATE = VBOXMAINLIB
439VBoxCOM_SOURCES = \
440 glue/com.cpp \
441 glue/initterm.cpp \
442 glue/string.cpp \
443 glue/EventQueue.cpp \
444 glue/ErrorInfo.cpp
445ifeq ($(BUILD_TARGET),win)
446 VBoxCOM_DEFS.x86 += _WIN32_WINNT=0x0500
447 VBoxCOM_DEFS.amd64 += _WIN32_WINNT=0x0510
448 VBoxCOM_SOURCES += \
449 $(PATH_VBoxCOM)/VirtualBox_i.c
450else
451 VBoxCOM_INCS += \
452 include
453 VBoxCOM_SOURCES += \
454 linux/helpers.cpp
455endif
456
457
458#
459# Generate _DEPS on all sources which depends on generated headers.
460#
461ifeq ($(BUILD_TARGET),win)
462PREREQS = $(PATH_VBoxCOM)/VirtualBox_i.c
463else
464PREREQS = $(IDLTYPELIB) $(IDLHEADER)
465endif
466
467# brute force way to ensure the prereqs are generated before anything is compiled.
468define def_src_deps
469$(src)_ORDERDEPS += $(PREREQS)
470endef
471$(foreach src,\
472 $(VBoxC_SOURCES) $(VBoxC_SOURCES.$(BUILD_TARGET)) \
473 $(VBoxSVC_SOURCES) $(VBoxSVC_SOURCES.$(BUILD_TARGET)) \
474 $(VBoxCOM_SOURCES) \
475 ,$(eval $(value def_src_deps)))
476
477
478#
479# Embed XML Schema files to VBoxSVC
480#
481
482VBOX_XML_SCHEMA_H = $(PATH_TARGET)/xml_VirtualBox_settings_xsd.h
483VBOX_XML_SCHEMA_COMMON_H = $(PATH_TARGET)/xml_VirtualBox_settings_common_xsd.h
484VBOX_XML_CONVERTER_TEMPLATE_H = $(PATH_TARGET)/xml_SettingsConverter_xsl.h
485
486VBOX_XML_SCHEMA_COMMON = xml/VirtualBox-settings-common.xsd
487VBOX_XML_SCHEMA.darwin = xml/VirtualBox-settings-macosx.xsd
488VBOX_XML_SCHEMA.linux = xml/VirtualBox-settings-linux.xsd
489VBOX_XML_SCHEMA.freebsd = xml/VirtualBox-settings-freebsd.xsd
490VBOX_XML_SCHEMA.win = xml/VirtualBox-settings-windows.xsd
491VBOX_XML_SCHEMA.os2 = xml/VirtualBox-settings-os2.xsd
492VBOX_XML_SCHEMA.solaris = xml/VirtualBox-settings-solaris.xsd
493
494VBOX_XML_CONVERTER_TEMPLATE = xml/SettingsConverter.xsl
495
496VirtualBoxImplExtra.cpp_DEPS = \
497 $(VBOX_XML_SCHEMA_H) $(VBOX_XML_SCHEMA_COMMON_H) $(VBOX_XML_CONVERTER_TEMPLATE_H)
498
499$(VBOX_XML_SCHEMA_H): $(VBOX_XML_SCHEMA.$(BUILD_TARGET)) $(VBOX_BIN2C)
500 $(call MSG_TOOL,bin2c,VBoxSVC,$<,$@)
501 $(QUIET)$(VBOX_BIN2C) _xml_VirtualBox_settings_xsd $< $@
502
503$(VBOX_XML_SCHEMA_COMMON_H): $(VBOX_XML_SCHEMA_COMMON) $(VBOX_BIN2C)
504 $(call MSG_TOOL,bin2c,VBoxSVC,$<,$@)
505 $(QUIET)$(VBOX_BIN2C) _xml_VirtualBox_settings_common_xsd $< $@
506
507$(VBOX_XML_CONVERTER_TEMPLATE_H): $(VBOX_XML_CONVERTER_TEMPLATE) $(VBOX_BIN2C)
508 $(call MSG_TOOL,bin2c,VBoxSVC,$<,$@)
509 $(QUIET)$(VBOX_BIN2C) _xml_SettingsConverter_xsl $< $@
510
511OTHER_CLEAN += \
512 $(VBOX_XML_SCHEMA_H) $(VBOX_XML_SCHEMA_COMMON_H) $(VBOX_XML_CONVERTER_TEMPLATE_H)
513
514
515#
516# Generate SchemaDefs.h and SchemaDefs.cpp from XML Schema
517#
518VBOX_XML_SCHEMADEFS_H = $(PATH_TARGET)/SchemaDefs.h
519VBOX_XML_SCHEMADEFS_CPP = $(PATH_TARGET)/SchemaDefs.cpp
520VBOX_XML_SCHEMADEFS_XSL = xml/SchemaDefs.xsl
521
522VBoxC_DEPS += $(VBOX_XML_SCHEMADEFS_H)
523VBoxC_INCS += $(PATH_TARGET)
524
525VBoxSVC_DEPS += $(VBOX_XML_SCHEMADEFS_H)
526VBoxSVC_INCS += $(PATH_TARGET)
527VBoxSVC_SOURCES += $(VBOX_XML_SCHEMADEFS_CPP)
528
529$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(BUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON)
530 $(call MSG_TOOL,xsltproc,SchemaDefs,$<,$@)
531 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(filter-out $(VBOX_XML_SCHEMA_COMMON),$^)
532
533$(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(BUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON)
534 $(call MSG_TOOL,xsltproc,SchemaDefs,$<,$@)
535 $(QUIET)$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(filter-out $(VBOX_XML_SCHEMA_COMMON),$^)
536
537OTHER_CLEAN += $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
538.NOTPARALLEL: $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
539
540
541#
542# Creates the symlinks necessary for making XPCOM work.
543#
544## @todo Figure out why Linux really needs this, darwin doesn't...
545
546xpcom-components_INST = $(INST_BIN)components/
547ifeq ($(BUILD_TARGET),linux)
548xpcom-components_SYMLINKS = \
549 VirtualBox_XPCOM.xpt=>../VirtualBox_XPCOM.xpt \
550 VBoxXPCOMBase.xpt=>../VBoxXPCOMBase.xpt \
551 VBoxC$(SUFF_DLL)=>../VBoxC$(SUFF_DLL) \
552 VBoxSVCM$(SUFF_DLL)=>../VBoxSVCM$(SUFF_DLL) \
553 VBoxXPCOMIPCC$(SUFF_DLL)=>../VBoxXPCOMIPCC$(SUFF_DLL)
554endif
555
556
557#
558# Include sub-makefile(s) last if we're not doing parallel building.
559#
560# We do this here so that the webservices ends up last in the target
561# lists. For 100% correctness we must do this after all the main
562# targets has been fully fleshed out as subheader/footer.kmk will
563# process new targets.
564#
565ifeq ($(KMK_OPTS_JOBS),1)
566 ifdef VBOX_WITH_WEBSERVICES
567 include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
568 endif
569 include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
570endif
571
572# generate rules
573include $(PATH_KBUILD)/subfooter.kmk
574
575
576#
577# Additions rules.
578#
579
580XIDLFILE = idl/VirtualBox.xidl
581
582ifneq ($(BUILD_TARGET),win)
583
584linux/helpers.cpp: $(IDLTYPELIB)
585
586$(IDLFILE): idl/xpidl.xsl $(XIDLFILE) | $(call DIRDEP,$(dir $(IDLFILE)))
587 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
588 $(QUIET)$(MKDIR) -p $(@D)
589 $(QUIET)$(VBOX_XSLTPROC) -o $@ $^
590
591$(IDLTYPELIB): $(IDLFILE) | $(call DIRDEP,$(dir $(IDLTYPELIB)))
592 $(call MSG_TOOL,xpidl,VBoxSVC,$<,$@)
593 $(QUIET)$(VBOX_XPIDL) -m typelib -I $(VBOX_PATH_XPCOM_IDL) -e $@ $<
594
595$(IDLHEADER): $(IDLFILE) | $(call DIRDEP,$(dir $(IDLHEADER)))
596 $(call MSG_TOOL,xpidl,VBoxSVC,$<,$@)
597 $(QUIET)$(VBOX_XPIDL) -m header -I $(VBOX_PATH_XPCOM_IDL) -e $@ $<
598
599else
600
601MAIN_IDL ?= $(EXEC_X86_WIN32) $(firstword $(wildcard \
602 $(PATH_SDK_WINPSDK_BIN)/Midl.Exe\
603 $(PATH_SDK_WINPSDK)/Bin/Midl.Exe\
604 $(PATH_DEVTOOLS)/win.x86/bin/midl.exe\
605 ) Sorry_Cannot_Find_The_Midl_Compiler_In_The_PSDK)
606IDL_DEFS = /nologo
607ifdef VBOX_WITH_VRDP
608 IDL_DEFS += /D VBOX_VRDP
609endif
610
611$(IDLFILE): idl/midl.xsl $(XIDLFILE)
612 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
613 $(QUIET)$(MKDIR) -p $(VBOX_PATH_SDK)/idl
614 $(QUIET)$(VBOX_XSLTPROC) -o $@ $^
615
616$(PATH_TARGET)/VBoxSVC.rgs: win32/VirtualBox_rgs.xsl $(XIDLFILE)
617 $(VBOX_XSLTPROC) --stringparam Module VBoxSVC -o $@ $^
618
619$(PATH_TARGET)/VBoxC.rgs: win32/VirtualBox_rgs.xsl $(XIDLFILE)
620 $(VBOX_XSLTPROC) --stringparam Module VBoxC -o $@ $^
621
622## @todo r=bird: last changes to this rule showed incorrect dependencies here as it broke testcase (see testboxwin2).
623# This is kind of obvious when looking at the rule, because it's (a) not specifing all it output
624# and (b) generating more stuff *after* the maintarget has been completed.
625#
626# What needs to be done is to not depend on _i.c in the object subdir, but on all the final outputs.
627$(PATH_VBoxCOM)/VirtualBox_i.c \
628+ $(VBOX_PATH_SDK)/lib/VirtualBox_i.c \
629+ $(PATH_VBoxCOM)/VirtualBox.h \
630+ $(VBOX_PATH_SDK)/include/VirtualBox.h \
631+ $(PATH_VBoxCOM)/VirtualBox.tlb \
632+ $(VBOX_PATH_SDK)/lib/VirtualBox.tlb: $(IDLFILE) | $(call DIRDEP,$(PATH_VBoxCOM))
633 $(MAIN_IDL) $(IDL_DEFS) \
634 /out $(subst /,\\,$(PATH_VBoxCOM)) \
635 /cpp_cmd $(subst /,\\,$(TOOL_$(VBOX_VCC_TOOL)_CC)) \
636 /I $(subst /,\\,$(PATH_SDK_WINPSDK_INC)) \
637 /I idl \
638 $(subst /,\\,$<)
639 $(MKDIR) -p $(VBOX_PATH_SDK)/include
640 $(CP) $(PATH_VBoxCOM)/VirtualBox.h $(VBOX_PATH_SDK)/include
641 $(MKDIR) -p $(VBOX_PATH_SDK)/lib
642 $(CP) $(PATH_VBoxCOM)/VirtualBox.tlb $(VBOX_PATH_SDK)/lib
643 $(CP) $(PATH_VBoxCOM)/VirtualBox_i.c $(VBOX_PATH_SDK)/lib
644
645endif
646
647# bird: anyone still using this? If not it's a gonner.
648## Hack to work around wine's trouble with midl.exe and rc.exe (seems to be msvcrt.dll related)
649#gen: $(PREREQS)
650
651
652#
653# Translation stuff
654#
655VBoxSVC_HEADERS = \
656 include/collection.h \
657 include/MachineImpl.h \
658 include/HostDVDDriveImpl.h \
659 include/HostFloppyDriveImpl.h
660
661VBoxC_HEADERS = \
662 include/ConsoleImpl.h
663
664VBoxSVC_TRANSLATIONS = \
665 nls/VBoxSVC_de.ts
666
667VBoxC_TRANSLATIONS = \
668 nls/VBoxC_de.ts
669
670updatenls:
671 $(VBOX_LUPDATE) $(VBoxSVC_SOURCES) $(VBoxSVC_HEADERS) -ts $(VBoxSVC_TRANSLATIONS)
672 $(VBOX_LUPDATE) $(VBoxC_SOURCES) $(VBoxC_HEADERS) -ts $(VBoxC_TRANSLATIONS)
673
674ifdef VBOX_WITH_XPCOM
675
676testidl: $(IDLFILE) $(IDLTYPELIB)
677testidlhdr: $(IDLHEADER)
678
679else
680
681testidl: $(IDLFILE) $(PATH_VBoxCOM)/VirtualBox_i.c
682
683endif
684
685testschemadefs: $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
686
687$(PATH_BIN)/comregister.cmd: win32/comregister.cmd
688 $(CP) $< $@
689
690
691# Hot fix when dependencies goes bad again...
692#.NOTPARALLEL: $(TARGET_VBoxC) $(TARGET_VBoxSVC) $(TARGET_VBoxCOM) $(IDLHEADER) $(IDLFILE) $(PATH_VBoxCOM)/VirtualBox_i.c
693
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette