Makefile.kmk revision c89ab46314a2ed24bfd30a78fabcd673f66a85c5
af062818b47340eef15700d2f0211576ba3506eevboxsync# Makefile for the VBox Main module.
af062818b47340eef15700d2f0211576ba3506eevboxsync# Copyright (C) 2004-2013 Oracle Corporation
af062818b47340eef15700d2f0211576ba3506eevboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
af062818b47340eef15700d2f0211576ba3506eevboxsync# available from http://www.virtualbox.org. This file is free software;
af062818b47340eef15700d2f0211576ba3506eevboxsync# you can redistribute it and/or modify it under the terms of the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync# General Public License (GPL) as published by the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
af062818b47340eef15700d2f0211576ba3506eevboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
af062818b47340eef15700d2f0211576ba3506eevboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
af062818b47340eef15700d2f0211576ba3506eevboxsyncSUB_DEPTH = ../../..
af062818b47340eef15700d2f0211576ba3506eevboxsyncinclude $(KBUILD_PATH)/subheader.kmk
af062818b47340eef15700d2f0211576ba3506eevboxsync# Include sub-makefile(s).
af062818b47340eef15700d2f0211576ba3506eevboxsyncifdef VBOX_WITH_WEBSERVICES
af062818b47340eef15700d2f0211576ba3506eevboxsync include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
af062818b47340eef15700d2f0211576ba3506eevboxsyncinclude $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
af062818b47340eef15700d2f0211576ba3506eevboxsyncinclude $(PATH_SUB_CURRENT)/cbinding/Makefile.kmk
af062818b47340eef15700d2f0211576ba3506eevboxsync# Targets and globals (bit of a mess...)
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_PATH_MAIN_SRC := $(PATH_SUB_CURRENT)
af062818b47340eef15700d2f0211576ba3506eevboxsyncifdef VBOX_ONLY_SDK
af062818b47340eef15700d2f0211576ba3506eevboxsync # I'm Evil! Dr. Evil.
af062818b47340eef15700d2f0211576ba3506eevboxsync VBoxCOM_0_OUTDIR = $(PATH_TARGET)/VBoxCOM
af062818b47340eef15700d2f0211576ba3506eevboxsync BLDDIRS += $(VBoxCOM_0_OUTDIR) $(PATH_STAGE_BIN)/components
af062818b47340eef15700d2f0211576ba3506eevboxsync include $(KBUILD_PATH)/tools/$(VBOX_VCC_TOOL).kmk # For the idl /cpp statement.
af062818b47340eef15700d2f0211576ba3506eevboxsync include $(KBUILD_PATH)/sdks/$(VBOX_WINPSDK).kmk
af062818b47340eef15700d2f0211576ba3506eevboxsyncendif # !VBOX_ONLY_SDK
af062818b47340eef15700d2f0211576ba3506eevboxsync# Construct VBOX_MAIN_DEFS
af062818b47340eef15700d2f0211576ba3506eevboxsync## @todo eliminate or expand VBOX_MAIN_DEFS.
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_MAIN_DEFS =
af062818b47340eef15700d2f0211576ba3506eevboxsyncifneq ($(KBUILD_TARGET),win)
af062818b47340eef15700d2f0211576ba3506eevboxsync ifndef VBOX_WITH_XPCOM
af062818b47340eef15700d2f0211576ba3506eevboxsync $(error "VBox: VBOX_WITH_XPCOM isn't defined")
af062818b47340eef15700d2f0211576ba3506eevboxsync ifneq ($(KBUILD_TARGET),os2)
af062818b47340eef15700d2f0211576ba3506eevboxsync VBOX_MAIN_DEFS += VBOX_WITH_SYS_V_IPC_SESSION_WATCHER
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_MAIN_DEFS += \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_RAW_RING1),VBOX_WITH_RAW_RING1,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_NETFLT),VBOX_WITH_NETFLT,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_COPYTOGUEST),VBOX_WITH_COPYTOGUEST,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_CROGL),VBOX_WITH_CROGL,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_GUEST_PROPS),VBOX_WITH_GUEST_PROPS,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_GUEST_PROPS_RDONLY_GUEST),VBOX_WITH_GUEST_PROPS_RDONLY_GUEST,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_GUEST_CONTROL),VBOX_WITH_GUEST_CONTROL,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_USB_VIDEO),VBOX_WITH_USB_VIDEO,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_USB_CARDREADER),VBOX_WITH_USB_CARDREADER,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_USB_CARDREADER_TEST),VBOX_WITH_USB_CARDREADER_TEST,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_HOSTNETIF_API),VBOX_WITH_HOSTNETIF_API,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync# Unconditionally enable the new semaphore key generation code
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_MAIN_DEFS += VBOX_WITH_NEW_SYS_V_KEYGEN
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_IDL_FILE.MSCOM = $(VBOX_PATH_SDK)/bindings/mscom/idl/VirtualBox.idl
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_IDL_FILE.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/idl/VirtualBox_XPCOM.idl
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_IDL_TYPELIB.XPCOM = $(PATH_STAGE_BIN)/components/VirtualBox_XPCOM.xpt
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_IDL_HEADER.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
af062818b47340eef15700d2f0211576ba3506eevboxsync# The MS COM specific stuff.
af062818b47340eef15700d2f0211576ba3506eevboxsyncif defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" == "win"
af062818b47340eef15700d2f0211576ba3506eevboxsync OTHERS += \
af062818b47340eef15700d2f0211576ba3506eevboxsync OTHER_CLEAN += \
af062818b47340eef15700d2f0211576ba3506eevboxsync INSTALLS += VBox-mscom-bindings-include VBox-mscom-bindings-lib
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-include_INST = $(INST_SDK)bindings/mscom/include/
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-include_MODE = a+r,u+w
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-include_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox.h
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-include_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox.h
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-lib_INST = $(INST_SDK)bindings/mscom/lib/
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-lib_MODE = a+r,u+w
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-lib_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
af062818b47340eef15700d2f0211576ba3506eevboxsync VBox-mscom-bindings-lib_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb
af062818b47340eef15700d2f0211576ba3506eevboxsync BLDDIRS += $(VBOX_PATH_SDK)/bindings/mscom/idl
af062818b47340eef15700d2f0211576ba3506eevboxsync# The XPCOM specific stuff.
af062818b47340eef15700d2f0211576ba3506eevboxsync# if defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" != "win" -- does not build on Windows
af062818b47340eef15700d2f0211576ba3506eevboxsyncif "$(KBUILD_TARGET)" != "win"
af062818b47340eef15700d2f0211576ba3506eevboxsync OTHERS += $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
af062818b47340eef15700d2f0211576ba3506eevboxsync OTHER_CLEAN += \
af062818b47340eef15700d2f0211576ba3506eevboxsync VBOX_MAIN_PREREQS += $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM)
af062818b47340eef15700d2f0211576ba3506eevboxsync BLDDIRS += \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_PATH_SDK)/bindings/xpcom/idl \
af062818b47340eef15700d2f0211576ba3506eevboxsyncendif # xpcom
af062818b47340eef15700d2f0211576ba3506eevboxsync# Strip documentation from source XIDL so that we don't get a full
af062818b47340eef15700d2f0211576ba3506eevboxsync# recompile every time a comma in the documentation is changed.
af062818b47340eef15700d2f0211576ba3506eevboxsync$(VBOX_XIDL_FILE).ts +| $(VBOX_XIDL_FILE): \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_XIDL_FILE_SRC) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl \
af062818b47340eef15700d2f0211576ba3506eevboxsync | $$(dir $$@)
af062818b47340eef15700d2f0211576ba3506eevboxsync# $(CP) -fv $< $(VBOX_XIDL_FILE).ts
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(VBOX_XSLTPROC) -o $(VBOX_XIDL_FILE).ts $(VBOX_PATH_MAIN_SRC)/idl/docstrip.xsl $<
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(CP) --changed -fv $(VBOX_XIDL_FILE).ts $(VBOX_XIDL_FILE)
af062818b47340eef15700d2f0211576ba3506eevboxsyncOTHER_CLEAN += $(VBOX_XIDL_FILE) $(VBOX_XIDL_FILE).ts
af062818b47340eef15700d2f0211576ba3506eevboxsync# The Main API documentation
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_MAIN_DOC_DIR = $(VBOX_PATH_SDK)/docs
af062818b47340eef15700d2f0211576ba3506eevboxsyncBLDDIRS += $(VBOX_MAIN_DOC_DIR)
af062818b47340eef15700d2f0211576ba3506eevboxsync$(PATH_TARGET)/docs.Main: \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_XIDL_FILE_SRC) \
af062818b47340eef15700d2f0211576ba3506eevboxsync | $(PATH_TARGET)/ \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_MAIN_DOC_DIR)/
af062818b47340eef15700d2f0211576ba3506eevboxsync $(call MSG_TOOL,xsltproc,doxygen input,$<,$@)
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(RM) -f $(wildcard $(VBOX_MAIN_DOC_DIR)/html/*) $(PATH_TARGET)/docs.Main
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(VBOX_XSLTPROC) -o $(PATH_TARGET)/VirtualBox.idl $(VBOX_PATH_MAIN_SRC)/idl/doxygen.xsl $(VBOX_XIDL_FILE_SRC)
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(REDIRECT) -E 'DOCDIR=$(VBOX_MAIN_DOC_DIR)' -E 'PATH_TARGET=$(PATH_TARGET)' -E 'PATH_CHM=$(subst /,\,$(VBOX_MAIN_DOC_DIR)/VirtualBoxAPI.chm)' \
af062818b47340eef15700d2f0211576ba3506eevboxsync -- doxygen $(VBOX_PATH_MAIN_SRC)/Doxyfile.Main
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) ">>>>>>>>>>>>>>>>>>>> Main.err: >>>>>>>>>>>>>>>>>>>>>>>>"
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(CAT) "$(PATH_TARGET)/Main.err"
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "<<<<<<<<<<<<<<<<<<<< Main.err <<<<<<<<<<<<<<<<<<<<<<<<<"
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> Please fix above doxygen errors/warnings listed in"
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> $(PATH_TARGET)/Main.err"
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
af062818b47340eef15700d2f0211576ba3506eevboxsync -$(EXEC_X86_WIN32) $(VBOX_PATH_HTML_HELP_WORKSHOP)/hhc.exe $(subst /,\\,$(VBOX_MAIN_DOC_DIR)/html/index.hhp)
af062818b47340eef15700d2f0211576ba3506eevboxsync $(APPEND) $(PATH_TARGET)/docs.Main
af062818b47340eef15700d2f0211576ba3506eevboxsyncif !defined(VBOX_ONLY_DOCS)
af062818b47340eef15700d2f0211576ba3506eevboxsyncdocs: $(PATH_TARGET)/docs.Main
af062818b47340eef15700d2f0211576ba3506eevboxsync# Generate library with API class wrappers from the XIDL file.
af062818b47340eef15700d2f0211576ba3506eevboxsyncLIBRARIES += VBoxAPIWrap
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_TEMPLATE = VBOXMAINLIB
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_SOURCES = $(VBoxAPIWrap_GENERATEDCPP)
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_GENERATEDCPP = $(filter %.cpp,$(VBoxAPIWrap_GENERATEDSOURCES))
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_GENERATEDSOURCES = $(addprefix $(VBoxAPIWrap_0_OUTDIR)/,$(VBoxAPIWrap_VBOX_APIWRAPPERFILES))
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_RAWSRC = \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBoxAPIWrap_0_OUTDIR)/apiwrappers
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_XSLT = \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_PATH_MAIN_SRC)/idl/apiwrap-server.xsl
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_DEFS.win.x86 += _WIN32_WINNT=0x0500
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_DEFS.win.amd64 += _WIN32_WINNT=0x0510
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_INCS += \
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_CLEAN = \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBoxAPIWrap_RAWSRC)
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxAPIWrap_KMK = $(PATH_OUT)/vboxapiwrap.kmk
af062818b47340eef15700d2f0211576ba3506eevboxsyncinclude $(VBoxAPIWrap_KMK)
af062818b47340eef15700d2f0211576ba3506eevboxsync# Some SDK bit.
af062818b47340eef15700d2f0211576ba3506eevboxsyncINSTALLS += VBox-main-xidl
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-main-xidl_INST = $(INST_SDK)bindings/
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-main-xidl_MODE = a+r,u+w
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-main-xidl_SOURCES = $(VBOX_XIDL_FILE_SRC)
af062818b47340eef15700d2f0211576ba3506eevboxsyncifdef VBOX_WITH_PYTHON
af062818b47340eef15700d2f0211576ba3506eevboxsyncINSTALLS += VBox-python-glue
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-python-glue_INST = $(INST_SDK)installer/vboxapi/
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-python-glue_MODE = a+r,u+w
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-python-glue_SOURCES = \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBox-python-glue_CLEAN = \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py
af062818b47340eef15700d2f0211576ba3506eevboxsync$$(VBox-python-glue_0_OUTDIR)/VirtualBox_constants.py: \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_PATH_MAIN_SRC)/glue/constants-python.xsl \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_XIDL_FILE) \
af062818b47340eef15700d2f0211576ba3506eevboxsync | $$(dir $$@)
af062818b47340eef15700d2f0211576ba3506eevboxsync $(call MSG_TOOL,xsltproc,Python constants,$<,$@)
af062818b47340eef15700d2f0211576ba3506eevboxsync $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
af062818b47340eef15700d2f0211576ba3506eevboxsyncendif # VBOX_WITH_PYTHON
af062818b47340eef15700d2f0211576ba3506eevboxsyncifndef VBOX_ONLY_SDK # Note this goes on for *very* long
af062818b47340eef15700d2f0211576ba3506eevboxsync# Generate SchemaDefs.h and SchemaDefs.cpp from XML Schema
af062818b47340eef15700d2f0211576ba3506eevboxsync# These two files are used by both VBoxC and VBoxSVC.
af062818b47340eef15700d2f0211576ba3506eevboxsyncBLDDIRS += $(PATH_TARGET)/Main
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_XML_SCHEMADEFS_H = $(PATH_TARGET)/Main/SchemaDefs.h
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_XML_SCHEMADEFS_CPP = $(PATH_TARGET)/Main/SchemaDefs.cpp
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_XML_SCHEMADEFS_XSL = $(VBOX_PATH_MAIN_SRC)/xml/SchemaDefs.xsl
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_AUTOGEN_EVENT_H = $(PATH_TARGET)/Main/VBoxEvents.h
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBOX_AUTOGEN_EVENT_CPP = $(PATH_TARGET)/Main/VBoxEvents.cpp
af062818b47340eef15700d2f0211576ba3506eevboxsynctestschemadefs: $(VBOX_XML_SCHEMADEFS_H) $(VBOX_XML_SCHEMADEFS_CPP)
af062818b47340eef15700d2f0211576ba3506eevboxsync# VBoxSVC executable
af062818b47340eef15700d2f0211576ba3506eevboxsyncPROGRAMS += VBoxSVC
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxSVC_TEMPLATE = VBOXMAINEXE
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxSVC_DEFS = \
af062818b47340eef15700d2f0211576ba3506eevboxsync VBOX_MAIN_SETTINGS_ADDONS \
af062818b47340eef15700d2f0211576ba3506eevboxsync IN_VMM_STATIC \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(VBOX_MAIN_DEFS) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_VBOXSDL),VBOX_WITH_VBOXSDL,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_HEADLESS),VBOX_WITH_HEADLESS,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_QTGUI),VBOX_WITH_QTGUI,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_HGCM),VBOX_WITH_HGCM,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_ALSA),VBOX_WITH_ALSA,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_PULSE),VBOX_WITH_PULSE,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_WINMM),VBOX_WITH_WINMM,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_SOLARIS_OSS),VBOX_WITH_SOLARIS_OSS,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_AHCI),VBOX_WITH_AHCI,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_LSILOGIC),VBOX_WITH_LSILOGIC,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_LINUX_COMPILER_H),VBOX_WITH_LINUX_COMPILER_H,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_RESOURCE_USAGE_API),VBOX_WITH_RESOURCE_USAGE_API,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_PDM_ASYNC_COMPLETION),VBOX_WITH_PDM_ASYNC_COMPLETION,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_DBUS),$(if $(VBOX_USB_WITH_DBUS),VBOX_USB_WITH_DBUS,),) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_USB_WITH_INOTIFY),VBOX_USB_WITH_INOTIFY,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_S3),VBOX_WITH_S3,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_NAT_SERVICE),VBOX_WITH_NAT_SERVICE,)
af062818b47340eef15700d2f0211576ba3506eevboxsyncifdef VBOX_WITH_USB
af062818b47340eef15700d2f0211576ba3506eevboxsync VBoxSVC_DEFS += \
af062818b47340eef15700d2f0211576ba3506eevboxsync VBOX_WITH_USB \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \
af062818b47340eef15700d2f0211576ba3506eevboxsync $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,)
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxSVC_DEFS.win += _WIN32_WINNT=0x0510
af062818b47340eef15700d2f0211576ba3506eevboxsync# Try to load and use libhal at runtime for probing removable media
af062818b47340eef15700d2f0211576ba3506eevboxsync# VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
af062818b47340eef15700d2f0211576ba3506eevboxsyncVBoxSVC_DEFS.freebsd += VBOX_USE_LIBHAL
VBoxSVC_INCS.win = \
VBoxSVC_INCS.os2 = \
$(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
$(if $(VBOX_WITH_XPCOM),src-server/xpcom/server.cpp,)
src-server/linux/USBProxyServiceLinux.cpp_DEFS += VBOX_WITH_SYSFS_BY_DEFAULT
VBoxSVC_LIBS.win += \
$(PATH_SDK_$(VBOX_WINDDK)_LIB)/Newdev.lib \
$(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
$(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration
VBoxSVC_LDFLAGS.darwin += -framework OpenGL
VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
VBoxSVC_LDFLAGS.darwin += -lproc
VBoxSVC_LDFLAGS.solaris += -lkstat -lnvpair
VBoxSVC_SOURCES += src-server/generic/NetIf-generic.cpp
src-server/win/VBoxSVC.rc_INCS = $(VBoxSVC_0_OUTDIR)
src-server/win/VBoxSVC.rc_DEPS = $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
src-server/win/VBoxSVC.rc_CLEAN = $(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs $(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc
$$(VBoxSVC_0_OUTDIR)/VBoxSVC-icon.rc: $(MAKEFILE_CURRENT) $(VBOX_WINDOWS_ICON_FILE) | $$(dir $$(@D))
$$(VBoxSVC_0_OUTDIR)/VBoxSVC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$(@D))
# good to check the validity for every VirtualBox.xidl change.
#$(VBOX_XIDL_FILE).validated.ts: $(VBOX_XIDL_FILE_SRC)
# xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
# $(QUIET)$(CP) --changed -fv $< $(VBOX_XIDL_FILE).validated.ts
#OTHERS += $(VBOX_XIDL_FILE).validated.ts
#OTHER_CLEAN += $(VBOX_XIDL_FILE).validated.ts
xmllint --dtdvalid $(VBOX_PATH_MAIN_SRC)/idl/VirtualBox.dtd --noout $<
VBOX_XML_SCHEMA = $(VBOX_PATH_MAIN_SRC)/xml/VirtualBox-settings.xsd
$(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
$(QUIET)$(VBOX_XSLTPROC) --stringparam mode define -o $@ $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA)
xmllint --schema $< --noout $(HOME)/.VirtualBox/VirtualBox.xml
$(VBOX_AUTOGEN_EVENT_H): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
$(VBOX_AUTOGEN_EVENT_CPP): $(VBOX_PATH_MAIN_SRC)/idl/comimpl.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
-install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
-exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
VBoxSVCM_ORDERDEPS += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
VBoxSVCM_CLEAN += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
$$(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def:
VBoxSVCM_INTERMEDIATES += $(VBOX_IDL_HEADER.XPCOM)
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 $(VBoxC_0_OUTDIR)/VBoxC.def \
VBoxC_LDFLAGS.win += /MANIFEST
VBoxC_LIBS.win += \
$(PATH_SDK_$(VBOX_WINDDK)_LIB)/Newdev.lib \
$(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/comsupp.lib \
$(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib \
$(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib
VBoxC_LDFLAGS.darwin += -framework OpenGL
$(if $(VBOX_WITH_USB_VIDEO),src-client/UsbWebcamInterface.cpp,) \
$(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \
$(if $(VBOX_WITH_PCI_PASSTHROUGH),src-client/PCIRawDevImpl.cpp,) \
VBoxC_ORDERDEPS += $(VBoxC_0_OUTDIR)/VBoxC.def
VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxC.def
$$(VBoxC_0_OUTDIR)/VBoxC.def: $(MAKEFILE_CURRENT)
$$(VBoxC_0_OUTDIR)/VBoxC.rgs: $(VBOX_PATH_MAIN_SRC)/src-all/win/VirtualBox_rgs.xsl $(VBOX_XIDL_FILE) | $$(dir $$@)
VBoxCOM_DEFS.x86 += _WIN32_WINNT=0x0500
VBoxCOM_DEFS.amd64 += _WIN32_WINNT=0x0510
$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c
VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security
VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows
INSTALLS.win += VBoxMain-com-inst
VBoxMain-com-inst_SOURCES = src-all/win/comregister.cmd
# Installs linux/hardening related things to components.
INSTALLS.linux += VBoxMain-hardening-inst
testidlhdr: $(VBOX_IDL_HEADER.XPCOM)
$(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \
+ $(VBoxCOM_0_OUTDIR)/VirtualBox.h \
VBOX_JMSCOM_JAR = $(VBoxJMscom-inst-jar_0_OUTDIR)/vboxjmscom.jar
VBOX_GLUE_XSLT_DIR := $(PATH_ROOT)/src/VBox/Main/glue
VBOX_JACOB_DIR := $(PATH_ROOT)/src/libs/jacob-1.15-M3
VBoxJMscom-inst-jar_INST = $(INST_SDK)bindings/mscom/java/
$(VBOX_JMSCOM_GEN)/jmscomglue.list \
$(VBOX_JMSCOM_GEN)/jmscomglue.list: \
$(VBOX_GLUE_XSLT_DIR)/glue-java.xsl \
$(QUIET)$(VBOX_FILESPLIT) $(VBOX_JMSCOM_GEN)/java/merged.file $(VBOX_JMSCOM_GEN)/java
$$(VBOX_JMSCOM_JAR): $(VBOX_JMSCOM_GEN)/jmscomglue.list | $$(dir $$@)
$(call MSG_TOOL,javac,$(notdir $@),jmscomgen.list,)
@$(VBOX_JMSCOM_GEN)/jmscomglue.list \
-d $(VBOX_JMSCOM_JDEST) -classpath $(VBOX_JMSCOM_JDEST)$(VBOX_SEP)$(VBOX_JACOB_DIR)/jacob.jar
## @todo compile TestVBox.java (see below) to have sanity checking
javagluesample_INST = $(INST_SDK)bindings/glue/java/
$(VBOX_PATH_MAIN_SRC)/glue/tests/Makefile=>Makefile
$(QUIET)$(RM) -f $(filter-out $(VBoxAPIWrap_GENERATEDSOURCES),$(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.cpp) $(wildcard $(VBoxAPIWrap_0_OUTDIR)/*.h))
$(QUIET)$(VBOX_XSLTPROC) --stringparam filelistonly VBoxAPIWrap_VBOX_APIWRAPPERFILES -o $@ $(VBoxAPIWrap_XSLT) $<
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 $<