Makefile revision bb0bf5f0d07a55839823656d524b6af71abac5c7
#
# Makefile for the VBox Main module.
#
#
# Copyright (C) 2006 InnoTek Systemberatung GmbH
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# General Public License as published by the Free Software Foundation,
# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
# distribution. VirtualBox OSE is distributed in the hope that it will
# be useful, but WITHOUT ANY WARRANTY of any kind.
#
# If you received this file as part of a commercial VirtualBox
# distribution, then only the terms of your commercial VirtualBox
# license agreement apply instead of the previous paragraph.
#
DEPTH = ../../..
else
#PROGRAMS = tstCFGLdr
OTHER_CLEAN = \
$(PATH_BIN)/comregister.cmd \
$(IDLFILE) \
$(PATH_VBoxCOM)/VirtualBox.h \
else
OTHERS = $(IDLTYPELIB)
OTHER_CLEAN = \
$(IDLFILE) \
$(IDLHEADER) \
$(IDLTYPELIB)
#
# The Main API documentation
#
$(PATH_TARGET)/docs.Main: \
PATH_OUT="$(PATH_OUT)" PATH_TARGET="$(PATH_TARGET)" 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)
$(MKDIR) -p $@
#
# VBoxSVC
#
VBoxSVC_INCS = \
include \
$(PATH_VBoxSVC) \
$(PATH_VBoxCOM) \
VBoxSVC_INCS += \
VBoxSVC_LIBS += \
VBoxSVC_LIBS += \
$(LIB_REM)
else
VBoxSVC_LIBS = \
$(PATH_LIB)/VBoxXML.lib \
VBoxSVC_SOURCES = \
VBoxSVC_SOURCES += \
#
# VBoxC
#
VBoxC_INCS = \
include \
$(PATH_VBoxC) \
$(PATH_VBoxCOM) \
VBoxC_INCS += \
VBoxC_LIBS = \
$(TARGET_VBoxXPCOM) \
else
VBoxC_LIBS = \
VBoxC_LIBS += \
$(LIB_VMM) \
$(LIB_REM)
VBoxC_SOURCES = \
VBoxC_SOURCES += \
VBoxC_SOURCES += \
VBoxC_SOURCES += \
#
# VBoxXML
#
## @todo Why do we need this? Why isn't it in the template?!?
VBoxXML_DEFS = \
VBoxXML_INCS = \
include \
$(PATH_TARGET)
VBoxXML_SOURCES = \
VBoxXML_LIBS = \
$(TARGET_VBoxXPCOM) \
## @todo (dmik): temporarily embed SettingsConverter.xsl into VBoxXML,
# later it should go to VBoxSVC as well
$(PATH_TARGET)/SettingsConverter_xsl.h: xml/SettingsConverter.xsl $(VBOX_BIN2C) | $(call DIRDEP,$(PATH_TARGET))
#
# tstCFGLdr - broken.
#
## @todo these makes uncessary noice. fix the template usage!
tstCFGLdr_INCS = \
include \
$(PATH_TARGET)
tstCFGLdr_LIBS = \
tstCFGLdr_LIBS += \
$(LIB_RUNTIME)
#
# VBoxCOM - COM Abstraction Layer library
#
VBoxCOM_SOURCES = \
VBoxCOM_INCS = \
#
# VBoxXPCOM
#
VBoxXPCOM_INCS = \
include \
#
# Generate _DEPS on all sources which depends on generated headers.
#
else
# brute force way to ensure the prereqs are generated before anything is compiled.
$(foreach src,\
#
# Embed XML Schema files to VBoxSVC
#
#
# Generate SchemaDefs.h from XML Schema
#
VBoxC_INCS += $(PATH_TARGET)
VBoxSVC_INCS += $(PATH_TARGET)
$(VBOX_XML_SCHEMADEFS_H): $(VBOX_XML_SCHEMADEFS_XSL) $(VBOX_XML_SCHEMA.$(BUILD_TARGET)) $(VBOX_XML_SCHEMA_COMMON)
#
# Creates the symlinks necessary for making XPCOM work.
#
# generate
#
# Additions rules.
#
$(QUIET)$(VBOX_XSLTPROC) -o $@ $^
$(IDLTYPELIB): $(IDLFILE)
$(MKDIR) -p $(@D)
$(QUIET)echo "keep" > $@
else
$(QUIET)$(VBOX_XSLTPROC) -o $@ $^
## @todo r=bird: last changes to this rule showed incorrect dependencies here as it broke testcase (see testboxwin2).
# This is kind of obvious when looking at the rule, because it's (a) not specifing all it output
# and (b) generating more stuff *after* the maintarget has been completed.
#
# What needs to be done is to not depend on _i.c in the object subdir, but on all the final outputs.
/I idl \
$(subst /,\\,$<)
# bird: anyone still using this? If not it's a gonner.
## Hack to work around wine's trouble with midl.exe and rc.exe (seems to be msvcrt.dll related)
#gen: $(PREREQS)
#
# Translation stuff
#
VBoxSVC_HEADERS = \
VBoxC_HEADERS = \
testidlhdr: $(IDLHEADER)
else
$(CP) $< $@
# Hot fix when dependencies goes bad again...
#.NOTPARALLEL: $(TARGET_VBoxC) $(TARGET_VBoxSVC) $(TARGET_VBoxXPCOM) $(TARGET_VBoxCOM) $(IDLHEADER) $(IDLFILE) $(PATH_VBoxCOM)/VirtualBox_i.c