Makefile.kmk revision 2e39040c46adbb62e0ae0830ecc6d75de315e4c6
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Makefile for the VBox Main module.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Copyright (C) 2006-2007 Sun Microsystems, Inc.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# available from http://www.virtualbox.org. This file is free software;
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# you can redistribute it and/or modify it under the terms of the GNU
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# General Public License (GPL) as published by the Free Software
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Clara, CA 95054 USA or visit http://www.sun.com if you need
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# additional information or have any questions.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncSUB_DEPTH = ../../..
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncinclude $(KBUILD_PATH)/subheader.kmk
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Include sub-makefile(s).
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_WITH_WEBSERVICES
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncinclude $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncinclude $(PATH_SUB_CURRENT)/cbinding/Makefile.kmk
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Targets and globals (bit of a mess...)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_PATH_MAIN_SRC := $(PATH_SUB_CURRENT)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_ONLY_SDK
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync # used by some rules
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync PATH_VBoxCOM = $(PATH_TARGET)/VBoxCOM
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync BLDDIRS += $(PATH_VBoxCOM) $(PATH_BIN)/components
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync # I'm Evil! Dr. Evil.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync include $(KBUILD_PATH)/tools/VCC70.kmk
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync include $(KBUILD_PATH)/sdks/WINPSDK.kmk
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncendif #!VBOX_ONLY_SDK
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Construct VBOX_MAIN_DEFS
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync## @todo eliminate or expand VBOX_MAIN_DEFS.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_MAIN_DEFS =
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifneq ($(KBUILD_TARGET),win)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync ifndef VBOX_WITH_XPCOM
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(error "VBox: VBOX_WITH_XPCOM isn't defined")
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync ifneq ($(KBUILD_TARGET),os2)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBOX_MAIN_DEFS+= VBOX_WITH_SYS_V_IPC_SESSION_WATCHER
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_MAIN_DEFS += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_NETFLT),VBOX_WITH_NETFLT,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_CROGL),VBOX_WITH_CROGL,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_GUEST_PROPS),VBOX_WITH_GUEST_PROPS,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_HOSTNETIF_API),VBOX_WITH_HOSTNETIF_API,)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncif1of ($(KBUILD_TARGET), linux freebsd solaris)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBOX_MAIN_DEFS += VBOX_MAIN_USE_SEMRW
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# if1of ($(VBOX_VERSION_BUILD),1 3 5 7 9)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# VBOX_MAIN_DEFS += VBOX_MAIN_AUTOLOCK_TRAP
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Unconditionally enable the new semaphore key generation code
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_MAIN_DEFS += VBOX_WITH_NEW_SYS_V_KEYGEN
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_IDL_FILE.MSCOM = $(VBOX_PATH_SDK)/bindings/mscom/idl/VirtualBox.idl
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_IDL_FILE.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/idl/VirtualBox_XPCOM.idl
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_IDL_TYPELIB.XPCOM = $(PATH_BIN)/components/VirtualBox_XPCOM.xpt
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_IDL_HEADER.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# The MS COM specific stuff.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncif defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" == "win"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync OTHERS += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/include/VirtualBox.h \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox.tlb \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox_i.c \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/python/samples/vboxshell.py \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/python/samples/shellcommon.py
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync OTHER_CLEAN += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/include/VirtualBox.h \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox.tlb \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox_i.c \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(PATH_VBoxCOM)/VirtualBox.h \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(PATH_VBoxCOM)/VirtualBox_i.c \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(PATH_VBoxCOM)/VirtualBox.tlb \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/python/samples/vboxshell.py \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/mscom/python/samples/shellcommon.py
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBOX_MAIN_PREREQS += $(PATH_VBoxCOM)/VirtualBox_i.c
004d34f82d0e8a4d58a65cc50eacf298bc6eb956vboxsync BLDDIRS += $(VBOX_PATH_SDK)/bindings/mscom/idl
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# The XPCOM specific stuff.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncif defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" != "win"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync OTHERS += $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync OTHER_CLEAN += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBOX_MAIN_PREREQS += $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync BLDDIRS += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_SDK)/bindings/xpcom/idl \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncendif # xpcom
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Strip documentation from source XIDL so that we don't get a full
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# recompile every time a comma in the documentation is changed.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync$(VBOX_XIDL_FILE).ts |+ $(VBOX_XIDL_FILE): \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_XIDL_FILE_SRC) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync | $$(dir $$@)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# $(CP) -fv $< $(VBOX_XIDL_FILE).ts
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_XSLTPROC) -o $(VBOX_XIDL_FILE).ts $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl $<
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(CP) --changed -fv $(VBOX_XIDL_FILE).ts $(VBOX_XIDL_FILE)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# The Main API documentation
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_MAIN_DOC_DIR = $(VBOX_PATH_SDK)/docs
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncBLDDIRS += $(VBOX_MAIN_DOC_DIR)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync$(PATH_TARGET)/docs.Main: \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_XIDL_FILE_SRC) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync | $(PATH_TARGET)/ \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_MAIN_DOC_DIR)/
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(RM) -f $(wildcard $(VBOX_MAIN_DOC_DIR)/html/*) $(PATH_TARGET)/docs.Main
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_XSLTPROC) -o $(PATH_TARGET)/VirtualBox.idl $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl $(VBOX_XIDL_FILE_SRC)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(REDIRECT) -E 'DOCDIR=$(VBOX_MAIN_DOC_DIR)' -E 'PATH_TARGET=$(PATH_TARGET)' -E 'PATH_CHM=$(subst /,\,$(VBOX_MAIN_DOC_DIR)/VirtualBoxAPI.chm)' \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync -- doxygen $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) ">>>>>>>>>>>>>>>>>>>> Main.err: >>>>>>>>>>>>>>>>>>>>>>>>"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(CAT) "$(PATH_TARGET)/Main.err"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "<<<<<<<<<<<<<<<<<<<< Main.err <<<<<<<<<<<<<<<<<<<<<<<<<"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> Please fix above doxygen errors/warnings listed in"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> $(PATH_TARGET)/Main.err"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync @$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync -$(EXEC_X86_WIN32) $(VBOX_PATH_HTML_HELP_WORKSHOP)/hhc.exe $(subst /,\\,$(VBOX_MAIN_DOC_DIR)/html/index.hhp)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(APPEND) $(PATH_TARGET)/docs.Main
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncif !defined(VBOX_ONLY_DOCS)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncdocs: $(PATH_TARGET)/docs.Main
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Some SDK bit.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncINSTALLS += VBox-main-xidl
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBox-main-xidl_INST = $(INST_SDK)bindings/
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBox-main-xidl_SOURCES = $(VBOX_XIDL_FILE_SRC)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifndef VBOX_ONLY_SDK # Note this goes on for *very* long
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Generate SchemaDefs.h and SchemaDefs.cpp from XML Schema
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# These two files are used by both VBoxC and VBoxSVC.
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncBLDDIRS += $(PATH_TARGET)/Main
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_XML_SCHEMADEFS_H = $(PATH_TARGET)/Main/SchemaDefs.h
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_XML_SCHEMADEFS_CPP = $(PATH_TARGET)/Main/SchemaDefs.cpp
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBOX_XML_SCHEMADEFS_XSL = $(VBOX_PATH_MAIN_SRC)/xml/SchemaDefs.xsl
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsynctestschemadefs: $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# VBoxSVC executable
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncPROGRAMS += VBoxSVC
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_TEMPLATE = VBOXMAINEXE
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_DEFS = \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBOX_MAIN_SETTINGS_ADDONS \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_MAIN_DEFS) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_VRDP),VBOX_WITH_VRDP,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_HEADLESS),VBOX_WITH_HEADLESS,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_QTGUI),VBOX_WITH_QTGUI,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_MAIN_RELEASE_LOG),VBOX_MAIN_RELEASE_LOG LOG_ENABLED,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_ALSA),VBOX_WITH_ALSA,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_PULSE),VBOX_WITH_PULSE,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_WINMM),VBOX_WITH_WINMM,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_AHCI),VBOX_WITH_AHCI,) \
004d34f82d0e8a4d58a65cc50eacf298bc6eb956vboxsync $(if $(VBOX_WITHOUT_LINUX_COMPILER_H),VBOX_WITHOUT_LINUX_COMPILER_H,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_RESOURCE_USAGE_API),VBOX_WITH_RESOURCE_USAGE_API,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_PDM_ASYNC_COMPLETION),VBOX_WITH_PDM_ASYNC_COMPLETION,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_DBUS),VBOX_WITH_DBUS,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,)
004d34f82d0e8a4d58a65cc50eacf298bc6eb956vboxsyncVBoxSVC_CXXFLAGS = $(filter-out -Wno-unused,$(TEMPLATE_VBOXMAINEXE_CXXFLAGS))
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_WITH_USB
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBoxSVC_DEFS += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBOX_WITH_USB \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_DEFS.win.x86 += _WIN32_WINNT=0x0500
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# Try to load and use libhal at runtime for probing removable media
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync# VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_SOLARIS_NSL_RESOLVED
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync VBoxSVC_DEFS.solaris += VBOX_SOLARIS_NSL_RESOLVED
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_INCS = \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(PATH_VBoxSVC) \
004d34f82d0e8a4d58a65cc50eacf298bc6eb956vboxsync $(dir $(VBOX_XML_SCHEMADEFS_H)) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(PATH_VBoxCOM)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_WITH_USB
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_LIBS += \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(LIB_DDU) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(LIB_SETTINGS)
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(LIB_VMM) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_WITH_NETFLT
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync ifdef VBOX_SOLARIS_NSL_RESOLVED
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncifdef VBOX_WITH_USB
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsyncVBoxSVC_INTERMEDIATES = \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_MAIN_PREREQS) \
833f83ce101b6e9168f519decc0dc7a1079d35f7vboxsync $(VBOX_XML_SCHEMADEFS_H)
$(if $(VBOX_WITH_VRDP),VRDPServerImpl.cpp,) \
$(if $(VBOX_WITH_XPCOM),xpcom/server.cpp,) \
# since comdef.h is in both the DDK and VCC we want to make sure
# we're using the VCC since we're not using the DDK compiler/crt.
win/NetIf-win.cpp_INCS.win += $(PATH_TOOL_$(VBOX_VCC_TOOL)_INC)
VBoxSVC_LIBS.win += \
$(PATH_LIB)/WinNetConfig.lib \
$(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
$(PATH_SDK_WINPSDK_LIB)/WbemUuid.Lib
VBoxSVC_DEFS.win += VBOX_NETFLT_ONDEMAND_BIND
VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration
VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
VBoxSVC_LDFLAGS.darwin += -lproc
VBoxSVC_LDFLAGS.solaris += -lkstat
VBoxSVC_SOURCES += generic/NetIf-generic.cpp
win/VBoxSVC.rc_INCS = $(PATH_VBoxSVC)
$$(PATH_VBoxSVC)/VBoxSVC-icon.rc: $(MAKEFILE_CURRENT) $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$(@D))
$$(PATH_VBoxSVC)/VBoxSVC.rgs: $(VBOX_PATH_MAIN_SRC)/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$(@D))
VBOX_XML_SCHEMA_COMMON = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings-common.xsd
VBOX_XML_CONVERTER_TEMPLATE = $(VBOX_PATH_MAIN_SRC)/xml/SettingsConverter.xsl
$$(PATH_VBoxSVC)/xml_VirtualBox_settings_xsd.h: $(VBOX_XML_SCHEMA.$(KBUILD_TARGET)) $(VBOX_BIN2C)
$$(PATH_VBoxSVC)/xml_VirtualBox_settings_common_xsd.h: $(VBOX_XML_SCHEMA_COMMON) $(VBOX_BIN2C)
$$(PATH_VBoxSVC)/xml_SettingsConverter_xsl.h: $(VBOX_XML_CONVERTER_TEMPLATE) $(VBOX_BIN2C)
$(PATH_VBoxSVC)/xml_VirtualBox_settings_xsd.h \
$(PATH_VBoxSVC)/xml_VirtualBox_settings_common_xsd.h \
$(PATH_VBoxSVC)/xml_SettingsConverter_xsl.h
VBoxSVC_CLEAN += $(VirtualBoxImplExtra.cpp_DEPS)
$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(KBUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON) | $$(dir $$@)
$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(KBUILD_TARGET))
$(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(KBUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON) | $$(dir $$@)
$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(KBUILD_TARGET))
-install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
-exported_symbols_list $(PATH_VBoxSVCM)/VBoxSVCM.def
VBoxSVCM_ORDERDEPS += $(PATH_VBoxSVCM)/VBoxSVCM.def
VBoxSVCM_CLEAN += $(PATH_VBoxSVCM)/VBoxSVCM.def
$$(PATH_VBoxSVCM)/VBoxSVCM.def:
VBoxSVCM_INTERMEDIATES += $(VBOX_IDL_HEADER.XPCOM)
VBoxSettings_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/$(notdir $(LIB_SETTINGS)) -Wl,-x # no debug info please.
VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE
VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
VBoxC_INCS.win = \
-install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxC.dylib \
-exported_symbols_list $(PATH_VBoxC)/VBoxC.def
VBoxC_LDFLAGS.win = /MANIFEST
VBoxC_ORDERDEPS += $(PATH_VBoxC)/VBoxC.def
VBoxC_CLEAN += $(PATH_VBoxC)/VBoxC.def
$$(PATH_VBoxC)/VBoxC.def: $(MAKEFILE_CURRENT)
Version.cpp_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
Version.cpp_DEPS = $(VBOX_SVN_REV_KMK)
$$(PATH_VBoxC)/VBoxC.rgs: $(VBOX_PATH_MAIN_SRC)/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(PATH_VBoxC)/
VBoxCOM_DEFS.x86 += _WIN32_WINNT=0x0500
VBoxCOM_DEFS.amd64 += _WIN32_WINNT=0x0510
$(PATH_VBoxCOM)/VirtualBox_i.c
INSTALLS.win += VBoxMain-com-inst
include $(KBUILD_PATH)/subfooter.kmk
$(PATH_SDK_WINPSDK_BIN)/Midl.Exe\
$(PATH_SDK_WINPSDK)/Bin/Midl.Exe\
$(PATH_DEVTOOLS)/win.x86/bin/midl.exe\
testidlhdr: $(VBOX_IDL_HEADER.XPCOM)
## @todo r=bird: last changes to this rule showed incorrect dependencies here as it broke testcase (see testboxwin2).
# What needs to be done is to not depend on _i.c in the object subdir, but on all the final outputs.
$(PATH_VBoxCOM)/VirtualBox_i.c \
+ $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox_i.c \
+ $(PATH_VBoxCOM)/VirtualBox.h \
+ $(VBOX_PATH_SDK)/bindings/mscom/include/VirtualBox.h \
+ $(PATH_VBoxCOM)/VirtualBox.tlb \
+ $(VBOX_PATH_SDK)/bindings/mscom/lib/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $(call DIRDEP,$(PATH_VBoxCOM))
$(MKDIR) -p $(VBOX_PATH_SDK)/bindings/mscom/include
$(MKDIR) -p $(VBOX_PATH_SDK)/bindings/mscom/lib
$(VBOX_PATH_SDK)/bindings/mscom/python/samples/shellcommon.py \
+ $(VBOX_PATH_SDK)/bindings/mscom/python/samples/vboxshell.py: \
$(PATH_ROOT)/src/VBox/Frontends/VBoxShell/shellcommon.py \
$(PATH_ROOT)/src/VBox/Frontends/VBoxShell/mscom/vboxshell.py
$(MKDIR) -p $(VBOX_PATH_SDK)/bindings/mscom/python/samples
$(CP) $(PATH_ROOT)/src/VBox/Frontends/VBoxShell/shellcommon.py $(VBOX_PATH_SDK)/bindings/mscom/python/samples/shellcommon.py
$(CP) $(PATH_ROOT)/src/VBox/Frontends/VBoxShell/mscom/vboxshell.py $(VBOX_PATH_SDK)/bindings/mscom/python/samples/vboxshell.py
testconverter:: $(VBOX_USER_HOME)/VirtualBox.xml
$(call MSG_TOOL,xsltproc,Test Settings Converter,$<,$(VBOX_USER_HOME)/VirtualBox.xml.test)
testconverter2:: $(VBOX_USER_HOME)/Machines/dos/dos.xml
$(QUIET)$(VBOX_XSLTPROC) -o $<.test xml/SettingsConverter.xsl $<