Makefile.kmk revision 7fdd763c6c507adde17f4bd278b15891b8ebf568
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# Makefile for the VBox Main module.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# Copyright (C) 2006-2007 Sun Microsystems, Inc.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# available from http://www.virtualbox.org. This file is free software;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# you can redistribute it and/or modify it under the terms of the GNU
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# General Public License (GPL) as published by the Free Software
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# Clara, CA 95054 USA or visit http://www.sun.com if you need
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# additional information or have any questions.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDEPTH = ../../..
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncinclude $(PATH_KBUILD)/subheader.kmk
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# Include sub-makefile(s) first if we're doing parallel building.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# This is primarily a hack to try avoid idling all but one cpu when
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# building the gigant soap sources.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncifneq ($(KMK_OPTS_JOBS),1)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ifdef VBOX_WITH_WEBSERVICES
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncLIBRARIES += VBoxCOM
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDLLS += VBoxSettings VBoxC
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPROGRAMS += VBoxSVC
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncVBOX_MAIN_DEFS =
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncifneq ($(KBUILD_TARGET),win)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ifndef VBOX_WITH_XPCOM
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(error "VBox: VBOX_WITH_XPCOM isn't defined")
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DLLS += VBoxSVCM
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ifneq ($(KBUILD_TARGET),os2)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync VBOX_MAIN_DEFS+= VBOX_WITH_SYS_V_IPC_SESSION_WATCHER
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync VBOX_MAIN_DEFS += VBOX_WITH_UNIXY_TAP_NETWORKING
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if1of ($(KBUILD_TARGET), linux freebsd solaris)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# VBOX_MAIN_DEFS += VBOX_MAIN_USE_SEMRW
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if1of ($(VBOX_VERSION_BUILD),1 3 5 7 9)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync VBOX_MAIN_DEFS += VBOX_MAIN_AUTOLOCK_TRAP
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync## @todo eliminate or expand VBOX_MAIN_DEFS.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#PROGRAMS += tstCFGLdr
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncifeq ($(KBUILD_TARGET),win)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync OTHERS += $(PATH_BIN)/comregister.cmd
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync IDLFILE = $(VBOX_PATH_SDK)/idl/VirtualBox.idl
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync OTHER_CLEAN += \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(VBOX_PATH_SDK)/include/VirtualBox.h \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(IDLFILE) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(VBOX_PATH_SDK)/lib/VirtualBox.tlb \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(VBOX_PATH_SDK)/lib/VirtualBox_i.c \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(PATH_VBoxCOM)/VirtualBox.h \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(PATH_VBoxCOM)/VirtualBox_i.c \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(PATH_VBoxCOM)/VirtualBox.tlb
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INSTALLS += xpcom-components
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync IDLFILE = $(VBOX_PATH_SDK)/idl/VirtualBox_XPCOM.idl
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ifeq ($(KBUILD_TARGET),linux)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync IDLTYPELIB = $(PATH_BIN)/VirtualBox_XPCOM.xpt
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync IDLTYPELIB = $(PATH_BIN)/components/VirtualBox_XPCOM.xpt
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync IDLHEADER = $(VBOX_PATH_SDK)/include/VirtualBox_XPCOM.h
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync OTHERS += $(IDLTYPELIB)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync OTHER_CLEAN += \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(IDLFILE) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(IDLHEADER) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync $(IDLTYPELIB)
docs: $(PATH_TARGET)/docs.Main
$(PATH_TARGET)/docs.Main: \
$(call DIRDEP, $(PATH_OUT)/docs/Main)
$(RM) -f $(wildcard $(PATH_OUT)/docs/Main/html/*)
$(REDIRECT) -E 'PATH_OUT=$(PATH_OUT)' -E 'PATH_TARGET=$(PATH_TARGET)' -E 'PATH_CHM=$(subst /,\,$(PATH_BIN)/VirtualBoxAPI.chm)' \
-- doxygen Doxyfile.Main
-$(EXEC_X86_WIN32) $(VBOX_PATH_HTML_HELP_WORKSHOP)/hhc.exe $(subst /,\\,$(PATH_OUT)/docs/Main/html/index.hhp)
$(APPEND) $(PATH_TARGET)/docs.Main
$(call DIRDEP, $(PATH_OUT)/docs/Main):
VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE
VBoxSVC_DEFS.win.x86 += _WIN32_WINNT=0x0500
VBoxSVC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
VBoxSVC_INCS.win = \
VBoxSVC_INCS.os2 = \
$(PATH_ROOT)/src/VBox/HostDrivers/VBoxUSB/os2
VBoxSVC_SOURCES += VRDPServerImpl.cpp
VBoxSVC_LDFLAGS.darwin = -framework IOKit
VBoxSVC_LDFLAGS.linux += -rdynamic # for backtrace_symbols()
win32/VBoxSVC.rc_INCS = $(PATH_TARGET)
-install_name @executable_path/components/VBoxSVCM.dylib \
-exported_symbols_list $(PATH_TARGET)/VBoxSVCM.def
VBoxSVCM_ORDERDEPS += $(PATH_TARGET)/VBoxSVCM.def
VBoxSVCM_CLEAN += $(PATH_TARGET)/VBoxSVCM.def
$(PATH_TARGET)/VBoxSVCM.def:
VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
VBoxC_INCS.win = \
-install_name @executable_path/components/VBoxSVCM.dylib \
-exported_symbols_list $(PATH_TARGET)/VBoxC.def
VBoxC_LDFLAGS.win = /MANIFEST
VBoxC_ORDERDEPS += $(PATH_TARGET)/VBoxC.def
VBoxC_CLEAN += $(PATH_TARGET)/VBoxC.def
$(PATH_TARGET)/VBoxC.def: $(MAKEFILE_CURRENT)
# Version.cpp uses VBOX_SVN_REV.
Version.cpp_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
Version.cpp_DEPS = $(VBOX_SVN_REV_KMK)
ConsoleImpl.cpp_DEFS = VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\"
VBoxSettings_LDFLAGS.darwin = -install_name @executable_path/$(notdir $(LIB_SETTINGS)) -Wl,-x # no debug info please.
VBoxCOM_DEFS.x86 += _WIN32_WINNT=0x0500
VBoxCOM_DEFS.amd64 += _WIN32_WINNT=0x0510
$(PATH_VBoxCOM)/VirtualBox_i.c
PREREQS = $(PATH_VBoxCOM)/VirtualBox_i.c
VBOX_XML_SCHEMA_H = $(PATH_TARGET)/xml_VirtualBox_settings_xsd.h
VBOX_XML_SCHEMA_COMMON_H = $(PATH_TARGET)/xml_VirtualBox_settings_common_xsd.h
VBOX_XML_CONVERTER_TEMPLATE_H = $(PATH_TARGET)/xml_SettingsConverter_xsl.h
VBOX_XML_SCHEMA_COMMON = xml/VirtualBox-settings-common.xsd
VBOX_XML_CONVERTER_TEMPLATE = xml/SettingsConverter.xsl
VBOX_XML_SCHEMADEFS_H = $(PATH_TARGET)/SchemaDefs.h
VBOX_XML_SCHEMADEFS_CPP = $(PATH_TARGET)/SchemaDefs.cpp
VBOX_XML_SCHEMADEFS_XSL = xml/SchemaDefs.xsl
$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(KBUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON)
$(QUIET)$(VBOX_XSLTPROC) --stringparam mode declare -o $@ $(filter-out $(VBOX_XML_SCHEMA_COMMON),$^)
$(VBOX_XML_SCHEMADEFS_CPP): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(KBUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON)
# targets has been fully fleshed out as subheader/footer.kmk will
include $(PATH_SUB_CURRENT)/webservice/Makefile.kmk
include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
include $(PATH_KBUILD)/subfooter.kmk
XIDLFILE = idl/VirtualBox.xidl
linux/helpers.cpp: $(IDLTYPELIB)
$(IDLFILE): idl/xpidl.xsl $(XIDLFILE) | $(call DIRDEP,$(dir $(IDLFILE)))
$(PATH_SDK_WINPSDK_BIN)/Midl.Exe\
$(PATH_SDK_WINPSDK)/Bin/Midl.Exe\
$(PATH_DEVTOOLS)/win.x86/bin/midl.exe\
$(IDLFILE): idl/midl.xsl $(XIDLFILE)
## @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)/lib/VirtualBox_i.c \
+ $(PATH_VBoxCOM)/VirtualBox.h \
+ $(VBOX_PATH_SDK)/include/VirtualBox.h \
+ $(PATH_VBoxCOM)/VirtualBox.tlb \
+ $(VBOX_PATH_SDK)/lib/VirtualBox.tlb: $(IDLFILE) | $(call DIRDEP,$(PATH_VBoxCOM))
$(CP) $(PATH_VBoxCOM)/VirtualBox.h $(VBOX_PATH_SDK)/include
$(CP) $(PATH_VBoxCOM)/VirtualBox.tlb $(VBOX_PATH_SDK)/lib
$(CP) $(PATH_VBoxCOM)/VirtualBox_i.c $(VBOX_PATH_SDK)/lib
testidl: $(IDLFILE) $(PATH_VBoxCOM)/VirtualBox_i.c
#.NOTPARALLEL: $(TARGET_VBoxC) $(TARGET_VBoxSVC) $(TARGET_VBoxCOM) $(IDLHEADER) $(IDLFILE) $(PATH_VBoxCOM)/VirtualBox_i.c