Makefile.kmk revision d454a4558545f9fa1bf18c9a41a1f011fc305a4b
45e9809aff7304721fddb95654901b32195c9c7avboxsync# $Id$
45e9809aff7304721fddb95654901b32195c9c7avboxsync## @file
45e9809aff7304721fddb95654901b32195c9c7avboxsync# Sub-Makefile for the VBox C Binding.
45e9809aff7304721fddb95654901b32195c9c7avboxsync#
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#
45e9809aff7304721fddb95654901b32195c9c7avboxsync# Copyright (C) 2009-2012 Oracle Corporation
45e9809aff7304721fddb95654901b32195c9c7avboxsync#
45e9809aff7304721fddb95654901b32195c9c7avboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
45e9809aff7304721fddb95654901b32195c9c7avboxsync# available from http://www.virtualbox.org. This file is free software;
45e9809aff7304721fddb95654901b32195c9c7avboxsync# you can redistribute it and/or modify it under the terms of the GNU
45e9809aff7304721fddb95654901b32195c9c7avboxsync# General Public License (GPL) as published by the Free Software
45e9809aff7304721fddb95654901b32195c9c7avboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
45e9809aff7304721fddb95654901b32195c9c7avboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
45e9809aff7304721fddb95654901b32195c9c7avboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
45e9809aff7304721fddb95654901b32195c9c7avboxsync#
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncSUB_DEPTH = ../../../..
45e9809aff7304721fddb95654901b32195c9c7avboxsyncinclude $(KBUILD_PATH)/subheader.kmk
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncif defined(VBOX_WITH_XPCOM) || defined(VBOX_ONLY_SDK)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#
45e9809aff7304721fddb95654901b32195c9c7avboxsync# The samples
45e9809aff7304721fddb95654901b32195c9c7avboxsync#
45e9809aff7304721fddb95654901b32195c9c7avboxsyncINSTALLS += XpComCSamples
45e9809aff7304721fddb95654901b32195c9c7avboxsyncXpComCSamples_MODE = a+r,u+rw
45e9809aff7304721fddb95654901b32195c9c7avboxsyncXpComCSamples_INST = \
45e9809aff7304721fddb95654901b32195c9c7avboxsync $(INST_SDK)bindings/xpcom/cbinding/samples/
45e9809aff7304721fddb95654901b32195c9c7avboxsyncXpComCSamples_SOURCES = \
45e9809aff7304721fddb95654901b32195c9c7avboxsync tstXPCOMCGlue.c \
45e9809aff7304721fddb95654901b32195c9c7avboxsync tstXPCOMCCall.c \
45e9809aff7304721fddb95654901b32195c9c7avboxsync makefile.tstXPCOMCGlue=>Makefile
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncINSTALLS += XpComCGlue
45e9809aff7304721fddb95654901b32195c9c7avboxsyncXpComCGlue_MODE = a+r,u+rw
45e9809aff7304721fddb95654901b32195c9c7avboxsyncXpComCGlue_INST = \
45e9809aff7304721fddb95654901b32195c9c7avboxsync $(INST_SDK)bindings/xpcom/cbinding/
45e9809aff7304721fddb95654901b32195c9c7avboxsyncXpComCGlue_SOURCES = \
VBoxXPCOMCGlue.c \
$(XpComCHeaders_0_OUTDIR)/VBoxXPCOMCGlue.h
INSTALLS += XpComCHeaders
XpComCHeaders_MODE = a+r,u+rw
XpComCHeaders_INST = $(INST_SDK)bindings/xpcom/include/
XpComCHeaders_SOURCES = \
VBoxCAPI_v2_2.h \
VBoxCAPI_v3_0.h \
VBoxCAPI_v3_1.h \
VBoxCAPI_v3_2.h \
VBoxCAPI_v4_0.h \
VBoxCAPI_v4_1.h \
$(XpComCHeaders_0_OUTDIR)/VBoxCAPI_v$(VBOX_API_VERSION).h
$$(XpComCHeaders_0_OUTDIR)/VBoxXPCOMCGlue.h: \
$(PATH_SUB_CURRENT)/VBoxXPCOMCGlue.h.in \
$(MAKEFILE_CURRENT) \
| $$(dir $$@)
$(call MSG_GENERATE,,$@)
$(QUIET)$(SED) \
-e 's/@VBOX_API_VERSION@/$(VBOX_API_VERSION)/' \
< $< > $@
$$(XpComCHeaders_0_OUTDIR)/VBoxCAPI_v$(VBOX_API_VERSION).h: \
$(PATH_SUB_CURRENT)/xpcidl.xsl \
$(VBOX_XIDL_FILE) \
| $$(dir $$@)
$(call MSG_TOOL,xsltproc,XpComCHeaders,$<,$@)
$(QUIET)$(VBOX_XSLTPROC) -o $@ $^
endif # VBOX_WITH_XPCOM || SDK
if !defined(VBOX_ONLY_SDK) && defined(VBOX_WITH_XPCOM)
#
# The C utility DLL
#
ifdef VBOX_WITH_XPCOM
DLLS += VBoxXPCOMC
VBoxXPCOMC_TEMPLATE = VBOXMAINDLL
VBoxXPCOMC_DEFS = IN_VBOXXPCOMC
VBoxXPCOMC_SOURCES = \
VBoxXPCOMC.cpp
VBoxXPCOMC_INTERMEDIATES = \
$(VBOX_PATH_SDK)/bindings/xpcom/include/VBoxCAPI_v$(VBOX_API_VERSION).h
endif
#
# The C glue library.
#
LIBRARIES += VBoxXPCOMCGlue
VBoxXPCOMCGlue_TEMPLATE = VBOXMAINEXE
VBoxXPCOMCGlue_DEFS = IN_VBOXXPCOMC
VBoxXPCOMCGlue_SOURCES = \
VBoxXPCOMCGlue.c
VBoxXPCOMCGlue_DEPS = \
$(VBOX_PATH_SDK)/bindings/xpcom/cbinding/VBoxXPCOMCGlue.h
VBoxXPCOMCGlue_INCS = \
$(VBOX_PATH_SDK)/bindings/xpcom/cbinding
VBoxXPCOMCGlue_INTERMEDIATES = \
$(VBOX_PATH_SDK)/bindings/xpcom/include/VBoxCAPI_v$(VBOX_API_VERSION).h
if defined(VBOX_WITH_TESTCASES) && "$(KBUILD_TARGET)" != "darwin"
#
# The testcase (also in samples).
# C testcase using the dynamic glue.
#
PROGRAMS += tstXPCOMCGlue
tstXPCOMCGlue_TEMPLATE = VBOXR3EXE
tstXPCOMCGlue_INCS = \
$(VBOX_PATH_SDK)/bindings/xpcom/include \
$(VBOX_PATH_SDK)/bindings/xpcom/cbinding
tstXPCOMCGlue_INTERMEDIATES = \
$(VBOX_PATH_SDK)/bindings/xpcom/include/VBoxCAPI_v$(VBOX_API_VERSION).h
tstXPCOMCGlue_SOURCES = \
tstXPCOMCGlue.c
tstXPCOMCGlue_DEPS = \
$(VBOX_PATH_SDK)/bindings/xpcom/cbinding/VBoxXPCOMCGlue.h
tstXPCOMCGlue_LIBS = \
$(VBoxXPCOMCGlue_1_TARGET)
ifeq (disabled,1)
#
# The callback testcase.
#
PROGRAMS += tstXPCOMCCall
tstXPCOMCCall_TEMPLATE = VBOXR3EXE
tstXPCOMCCall_INCS = \
$(VBOX_PATH_SDK)/bindings/xpcom/include
tstXPCOMCCall_INTERMEDIATES = \
$(VBOX_PATH_SDK)/bindings/xpcom/include/VBoxCAPI_v$(VBOX_API_VERSION).h
tstXPCOMCCall_SOURCES = \
tstXPCOMCCall.c
tstXPCOMCCall_LIBS = \
$(VBoxXPCOMCGlue_1_TARGET)
endif
endif
endif # ! VBOX_ONLY_SDK
# generate rules.
include $(KBUILD_PATH)/subfooter.kmk