Makefile.kmk revision 18ef45ed44013c0259d156b9a9dfe79e1a752dc2
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Sub-Makefile for the IPRT (IPRT).
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Copyright (C) 2006-2010 Sun Microsystems, Inc.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# available from http://www.virtualbox.org. This file is free software;
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# you can redistribute it and/or modify it under the terms of the GNU
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# General Public License (GPL) as published by the Free Software
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# The contents of this file may alternatively be used under the terms
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# of the Common Development and Distribution License Version 1.0
f632be0ea31134f1ce343e84c90d7984d2bf96b2vboxsync# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# VirtualBox OSE distribution, in which case the provisions of the
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# CDDL are applicable instead of those of the GPL.
f632be0ea31134f1ce343e84c90d7984d2bf96b2vboxsync# You may elect to license modified versions of this file under the
f632be0ea31134f1ce343e84c90d7984d2bf96b2vboxsync# terms and conditions of either the GPL or the CDDL or both.
f632be0ea31134f1ce343e84c90d7984d2bf96b2vboxsync# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Clara, CA 95054 USA or visit http://www.sun.com if you need
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# additional information or have any questions.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncSUB_DEPTH = ../../..
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncinclude $(KBUILD_PATH)/subheader.kmk
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef VBOX_ONLY_ADDITIONS
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync # Only build the additions, sort out the legacy names first.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync LIBRARIES += RuntimeGuestR3 RuntimeGuestR3Shared RuntimeGuestR3Mini
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync ifdef VBOX_WITH_ADDITION_DRIVERS
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync LIBRARIES += RuntimeGuestR0
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync #LIBRARIES.os2 += RuntimeGuestR0OS2Warp3
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync LIBRARIES.win.x86 += RuntimeGuestR0NT4
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncelse ifdef VBOX_ONLY_DOCS
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync # Build docs only - need just regular R3 runtime.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync LIBRARIES += RuntimeR3
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync DLLS += VBoxRT
f632be0ea31134f1ce343e84c90d7984d2bf96b2vboxsyncelse # !VBOX_ONLY_ADDITIONS && !VBOX_ONLY_DOCS
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync # Normal build.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync BLDPROGS += uniread
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync LIBRARIES += RuntimeR3 RuntimeR0 RuntimeEFCPP RuntimeR3NoCRTGCC
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync LIBRARIES.win += RuntimeR0Stub
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync ifdef VBOX_WITH_RAW_MODE
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync LIBRARIES += RuntimeRC
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync LIBRARIES.win += RuntimeRCStub
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync ifdef VBOX_WITH_VBOXDRV
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync LIBRARIES += RuntimeR0Drv
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync ifdef VBOX_WITH_ADDITIONS
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync LIBRARIES += RuntimeGuestR3 RuntimeGuestR3Shared RuntimeGuestR3Mini
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync ifdef VBOX_WITH_ADDITION_DRIVERS
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync LIBRARIES += RuntimeGuestR0
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync #LIBRARIES.os2 += RuntimeGuestR0OS2Warp3
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync LIBRARIES.win.x86 += RuntimeGuestR0NT4
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync endif # VBOX_WITH_ADDITIONS
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync LIBRARIES.l4 += RuntimeR3L4 RuntimeLnxHostR3
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync DLLS += VBoxRT
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync# Where the generated stuff goes.
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsyncIPRT_OUT_DIR := $(PATH_TARGET)/Runtime
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncBLDDIRS += $(IPRT_OUT_DIR)
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncOTHER_CLEAN += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(IPRT_OUT_DIR)/errmsgdata.h \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(IPRT_OUT_DIR)/errmsgcomdata.h \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(IPRT_OUT_DIR)/errmsgvboxcomdata.h \
5eb36887f6970e0033f63fa135f3bb8fbfd6059bvboxsync $(IPRT_OUT_DIR)/Doxyfile.iprt \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(IPRT_OUT_DIR)/Doxyfile.iprt.dep \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(IPRT_OUT_DIR)/docs.iprt
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBOX_PATH_RUNTIME_SRC := $(PATH_SUB_CURRENT)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Set the defines that buildconfig.cpp needs. Its used by several targets.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync IPRT_BLDCFG_SCM_REV=$(VBOX_SVN_REV) \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync IPRT_BLDCFG_VERSION_STRING=\"$(VBOX_VERSION_STRING)\" \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync IPRT_BLDCFG_VERSION_MAJOR=$(VBOX_VERSION_MAJOR) \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync IPRT_BLDCFG_VERSION_MINOR=$(VBOX_VERSION_MINOR) \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync IPRT_BLDCFG_VERSION_BUILD=$(VBOX_VERSION_BUILD)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Unicode Specification reader used to regenerate unidata.cpp.
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncuniread_TEMPLATE = VBOXBLDPROG
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncuniread_INCS = include
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsync# Win64 assembly sources.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeWin64ASM_SOURCES = \
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsync# Win32 assembly sources.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeWin32ASM_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# NoCRT sources (minus math stuff).
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeNoCrt_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeR3 - Static Runtime for Ring-3 executables.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_TEMPLATE = VBoxR3Static
a0a3a26a4065b9401681a8c99a11bd83e08f94ccvboxsyncRuntimeR3_SDKS = VBOX_LIBXML2 VBOX_BOOST
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_SDKS.win = WINPSDK W2K3DDK
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_DEFS = IN_RT_R3 IN_SUP_R3 LDR_WITH_NATIVE LDR_WITH_ELF32 LDR_WITH_PE RT_WITH_VBOX RT_NO_GIP
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_KSTUFF
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_DEFS += LDR_WITH_KLDR
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef VBOX_MAIN_RELEASE_LOG ## @todo (dmik): temporary, until RTThreadSelf/RTThreadAdopt are properly updated
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_DEFS += RTCRITSECT_STRICT
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_LZJB
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_DEFS += RTZIP_USE_LZJB
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_LZO
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_DEFS += RTZIP_USE_LZO
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_FUTEX_BASED_SEMS
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_DEFS.linux += IPRT_WITH_FUTEX_BASED_SEMS
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_INCS = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(SDK_VBOX_ZLIB_INCS)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_INCS += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_KSTUFF
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_INCS += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(L4_INCDIR)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync#if1of ($(KBUILD_TARGET_ARCH),amd64 x86)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeR3_SOURCES += common/time/timesupA.asm
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_SOURCES += common/time/timesupref.cpp
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_LZJB
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_SOURCES += common/misc/lzjb.c
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Some versions of GCC might require this.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifdef IPRT_WITH_KSTUFF
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR3_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# VBox specific stuff.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifneq ($(KBUILD_TARGET),win)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncif1of ($(KBUILD_TARGET),freebsd linux netbsd openbsd solaris)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(if $(VBOX_WITH_DBUS),VBox/dbus.cpp,)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsyncRuntimeR3_SOURCES.win.amd64 = $(RuntimeWin64ASM_SOURCES)
090c459b9e90ca46e2ce2b8c81533ade3b23f3e9vboxsyncRuntimeR3_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES)
be9960565d2df0031f0e6c8a4610f5f0ae8c1845vboxsyncifdef IPRT_WITH_FUTEX_BASED_SEMS
be9960565d2df0031f0e6c8a4610f5f0ae8c1845vboxsync ifdef RT_NEW_LINUX_MUTEX_CODE
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## @todo Make BSD sched, implement RTMP*.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## PORTME: Porters add their selection of platform specific files for Ring-3 here.
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsync# L4 RuntimeR3 subtarget since L4 headers won't work with VBOXR3.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3L4_TEMPLATE = VBOXR3NP
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsyncRuntimeR3L4_DEFS = IN_RT_R3 IN_SUP_R3 LDR_WITH_NATIVE LDR_WITH_ELF LDR_WITH_PE
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsyncifneq ($(KBUILD_TARGET_ARCH),amd64)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3L4_DEFS += __PIC__
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR3L4_INCS = \
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsync $(L4_INCDIR)
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsyncRuntimeR3L4_SOURCES = \
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsync generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeGuestR3 - Guest Additions Runtime (static/exe).
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# (The KBUILD_HOST inheritance here is for l4 cross building the linux
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# additions, while .x86 is for cross building x86 while targeting amd64.)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_TEMPLATE := VBOXGUESTR3LIB
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## @todo change this to EXTEND the RuntimeR3 target.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_DEFS := $(filter-out RTCRITSECT_STRICT RT_NO_GIP, $(RuntimeR3_DEFS))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_DEFS.$(KBUILD_TARGET) := $(RuntimeR3_DEFS.$(KBUILD_TARGET))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_DEFS.$(KBUILD_HOST) := $(RuntimeR3_DEFS.$(KBUILD_HOST))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_INCS := $(RuntimeR3_INCS)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_INCS.$(KBUILD_HOST) := $(RuntimeR3_INCS.$(KBUILD_HOST))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_SOURCES := $(filter-out \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync , $(RuntimeR3_SOURCES))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_SOURCES.$(KBUILD_TARGET) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_SOURCES.$(KBUILD_HOST) := $(RuntimeR3_SOURCES.$(KBUILD_HOST))
ae5fc6ddd3d2ccdb941b1aacd23f6791fecc3354vboxsyncRuntimeGuestR3_SOURCES.$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET_ARCH))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
6abae205eac4f4a16f6ad5a2a71ed1f36d6a57b0vboxsyncRuntimeGuestR3_SOURCES.$(KBUILD_HOST).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_HOST).$(KBUILD_TARGET_ARCH))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeGuestR3Shared - Guest Additions Runtime (static/dll).
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Shared_TEMPLATE := VBOXGUESTR3DLL
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Shared_EXTENDS := RuntimeGuestR3
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Shared_INST = $(INST_ADDITIONS_LIB)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeGuestR3Mini - Minimal Guest Additions Runtime which does not require
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# initialization and can be linked into an .so. Intended
6abae205eac4f4a16f6ad5a2a71ed1f36d6a57b0vboxsync# for X11 drivers, GRADD and similar.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_TEMPLATE := VBOXGUESTR3DLL
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## @todo change this to EXTEND the RuntimeGuestR3 target.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_INST := $(INST_ADDITIONS_LIB)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_SDKS.win := $(RuntimeR3_SDKS.win)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_DEFS := $(filter-out RTCRITSECT_STRICT RT_NO_GIP, $(RuntimeR3_DEFS)) RT_MINI
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_DEFS.$(KBUILD_TARGET) := $(RuntimeR3_DEFS.$(KBUILD_TARGET))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_DEFS.$(KBUILD_HOST) := $(RuntimeR3_DEFS.$(KBUILD_HOST))
0433783a793d5ced0dc7f9dcf102143b66e1cd2cvboxsyncRuntimeGuestR3Mini_INCS := $(RuntimeR3_INCS)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_INCS.$(KBUILD_HOST) := $(RuntimeR3_INCS.$(KBUILD_HOST))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# VBox specific stuff.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeGuestR3Mini_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeLnxHostR3 Linux host program runtime
b2e90826ea719b22452d1ff7b977d4f40995b428vboxsync# (Only used when building L4.)
b2e90826ea719b22452d1ff7b977d4f40995b428vboxsyncRuntimeLnxHostR3_TEMPLATE = VBOXLNXHOSTR3LIB
af0a09edb4c1431b606fe207d4138da008f67f13vboxsyncRuntimeLnxHostR3_DEFS = IN_RT_R3 IN_SUP_R3 RT_WITH_VBOX RT_NO_GIP
af0a09edb4c1431b606fe207d4138da008f67f13vboxsyncRuntimeLnxHostR3_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(RuntimeR3_SOURCES.linux.$(KBUILD_TARGET_ARCH)) \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(RuntimeR3_SOURCES)
b14965bee0bfb359e6ce9db6beaa4add9935fe3cvboxsyncRuntimeLnxHostR3_INCS = \
b14965bee0bfb359e6ce9db6beaa4add9935fe3cvboxsync $(RuntimeR3_INCS.linux.$(KBUILD_TARGET_ARCH)) \
b14965bee0bfb359e6ce9db6beaa4add9935fe3cvboxsync $(RuntimeR3_INCS)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# VBoxRT - Shared Object / DLL version.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_TEMPLATE = VBoxR3Dll
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SDKS = VBOX_OPENSSL VBOX_LIBXML2 VBOX_LIBCURL VBOX_BOOST
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SDKS.win = WINPSDK W2K3DDK VBOX_NTDLL
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncif1of ($(KBUILD_TARGET)$(VBOX_WITH_HARDENING), darwin win)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_INST = $(INST_DLL) $(INST_TESTCASE)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_DEFS = $(filter-out RT_NO_GIP,$(RuntimeR3_DEFS)) IN_SUP_R3 IN_SUP_R3
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_DEFS.$(KBUILD_TYPE) = $(RuntimeR3_DEFS.$(KBUILD_TYPE))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(RuntimeR3_SOURCES)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SOURCES += \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SOURCES.$(KBUILD_TARGET) = $(RuntimeR3_SOURCES.$(KBUILD_TARGET))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = $(RuntimeR3_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT_SOURCES.$(KBUILD_TARGET_ARCH) = $(RuntimeR3_SOURCES.$(KBUILD_TARGET_ARCH))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(VBoxRT_0_OUTDIR)/VBoxRT.def
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsyncVBoxRT_INCS = $(RuntimeR3_INCS)
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsyncVBoxRT_INCS.$(KBUILD_TARGET) = $(RuntimeR3_INCS.$(KBUILD_TARGET))
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncVBoxRT_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = $(RuntimeR3_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncVBoxRT_LIBS = \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync $(PATH_LIB)/SUPR3$(VBOX_SUFF_LIB) \
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync $(PATH_LIB)/VBox-liblzf$(VBOX_SUFF_LIB) \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync $(SDK_VBOX_ZLIB_LIBS)
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncifdef IPRT_WITH_KSTUFF
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync VBoxRT_LIBS += \
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync $(PATH_LIB)/VBox-kStuff$(VBOX_SUFF_LIB)
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsyncifndef SDK_VBOX_LIBXML2_LIBS
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync VBoxRT_LIBS += \
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync $(PATH_LIB)/VBox-libxml2$(VBOX_SUFF_LIB)
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsyncifndef SDK_VBOX_OPENSSL_LIBS
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync VBoxRT_LIBS += \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync $(PATH_LIB)/VBox-libcrypto$(VBOX_SUFF_LIB)
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsyncifdef IPRT_WITH_LZO
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync VBoxRT_LIBS += lzo2
5d6df5999c0e844db1af3c6def0a9abac5120d3bvboxsync kstat smbios
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncVBoxRT_LDFLAGS.darwin = -framework IOKit -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxRT.dylib
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncifdef VBOX_USE_VCC80
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync -Wl,-whole-archive \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync $(PATH_LIB)/RuntimeR3L4$(VBOX_SUFF_LIB) \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync -Wl,-no-whole-archive
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncifeq ($(KBUILD_TARGET),l4)
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncVBoxRT_LIBS += \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync $(L4_LIBDIR)/libl4sys.a \
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsync $(PATH_LIB)/RuntimeR3L4$(VBOX_SUFF_LIB)
63a3c5be7ac89d0d5b3386988f8c2f78df0cacf6vboxsyncif1of ($(DLLS), VBoxRT)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync$$(VBoxRT_0_OUTDIR)/VBoxRT.def: \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(PATH_SUB_CURRENT)/r3/win/VBoxRT-$$(if-expr $$(KBUILD_TARGET_ARCH) == amd64,win64,win32).def \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(PATH_SUB_CURRENT)/r3/win/$(if $(VBOX_OSE),VBoxRT-openssl-ose.def,VBoxRT-openssl.def)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(RM) -f -- $@
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(REDIRECT) -wto $@ -- $(CAT_EXT) $^
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# HACK ALLERT! Make testcase run during build on SELinux boxes.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# Create a dummy DLL that ensure that VBoxRT is installed
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# during the DLL pass and cleaned up later.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncifeq ($(KBUILD_TARGET),linux)
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsync if1of (VBoxRT, $(DLLS))
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync ifneq ($(wildcard /usr/bin/chcon),)
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsyncVBoxRT_NOINST = true
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncDLLS += VBoxRTDummy
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRTDummy_TEMPLATE = VBOXR3
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRTDummy_NOINST = true
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRTDummy_LIBS = $(PATH_BIN)/VBoxRT.so
8d7d8eab781262b9db094374b166806c03786fa2vboxsyncVBoxRTDummy_CLEAN= $(PATH_BIN)/VBoxRT.so
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncBLDDIRS += $(PATH_BIN)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync$(PATH_BIN)/VBoxRT.so: $$(TARGET_VBoxRT) | $$(dir $$@)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(INSTALL) $< $@
b14965bee0bfb359e6ce9db6beaa4add9935fe3cvboxsync chcon -t texrel_shlib_t $@ || true
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncVBoxRT:: VBoxRTDummy
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync endif # chcon present.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync endif # building VBoxRT
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncendif # linux
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeR3NoCRTGCC - CRT replacement lib for VBoxREM.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# This is used together with VBoxRT.
bc5c5b5cd56ce8e64ada076691018f1dff17b2c2vboxsync## @todo the *_alias.c stuff is busted, remove and use RT_WITH_NOCRT_ALIASES instead.
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncRuntimeR3NoCRTGCC_TEMPLATE = VBOXNOCRTGCC
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncRuntimeR3NoCRTGCC_LIBSUFF = $(VBOX_SUFF_LIB)
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncRuntimeR3NoCRTGCC_INCS = include
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncRuntimeR3NoCRTGCC_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(RuntimeNoCrt_SOURCES) \
b2e90826ea719b22452d1ff7b977d4f40995b428vboxsync## @todo stop using the old memcpy.c and memset.c code.
b2e90826ea719b22452d1ff7b977d4f40995b428vboxsync# RuntimeR0 - Ring-0 library for VMMR0.
db07105a44f53e9e2377ade02cd3dbe482647cb9vboxsyncRuntimeR0_TEMPLATE = VBoxR0
db07105a44f53e9e2377ade02cd3dbe482647cb9vboxsyncRuntimeR0_DEFS = IN_RT_R0 RT_WITH_VBOX
b2e90826ea719b22452d1ff7b977d4f40995b428vboxsyncRuntimeR0_INCS = include
b2e90826ea719b22452d1ff7b977d4f40995b428vboxsyncRuntimeR0_SOURCES = \
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync $(RuntimeNoCrt_SOURCES)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncif1of ($(KBUILD_TARGET), darwin solaris freebsd)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0_SOURCES += \
78df65edff21c11c537f38e736707ea434ab5623vboxsync#if1of ($(KBUILD_TARGET_ARCH),amd64 x86)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeR0_SOURCES += common/time/timesupA.asm
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync RuntimeR0_SOURCES += common/time/timesupref.cpp
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0_SOURCES.win.amd64 = $(RuntimeWin64ASM_SOURCES)
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsyncRuntimeR0_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync# RuntimeR0Stub - Ring-0 context startup stub for Windows.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0Stub_TEMPLATE = VBoxR0
37a7e3e6f9ce5f6cabeb3f734044e9e8ca9cb1bfvboxsync# RuntimeR0Drv - Ring-0 library for host drivers.
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0Drv_TEMPLATE = VBOXR0DRV
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsyncRuntimeR0Drv_SDKS.win = W2K3DDK WINPSDKINCS
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncRuntimeR0Drv_DEFS = IN_RT_R0 RT_WITH_VBOX RT_WITHOUT_NOCRT_WRAPPERS RT_NO_EXPORT_SYMBOL
740011a32913a7f759d5b747def605a2b820c3fcvboxsyncRuntimeR0Drv_DEFS.linux = MODULE KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) IN_SUP_R0
ed82223f8f7be1435bf9b203a0ee4fbdfc856dc8vboxsyncRuntimeR0Drv_INCS := $(PATH_SUB_CURRENT) include
740011a32913a7f759d5b747def605a2b820c3fcvboxsync $(PATH_INS)/gen-sys-hdrs
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0Drv_SOURCES = \
be302cc3dbc037aaebbadbf9057662a88b3b23a8vboxsync## @todo: Linking against RuntimeR0Drv on Linux will result in unresolved external
be302cc3dbc037aaebbadbf9057662a88b3b23a8vboxsync## references to several string functions (e.g. strlen). We could include the
be302cc3dbc037aaebbadbf9057662a88b3b23a8vboxsync## missing functions here but our own implementations conflict with declarations
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## of some Linux kernels (inline versus not inline, size_t versus unsigned int).
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## The prototypes for the unresolved externals are declared in <linux/string.h>.
b14965bee0bfb359e6ce9db6beaa4add9935fe3cvboxsync## This file is not included with extern "C" { ... } and therefore the function
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## prototypes are mangled during C++ compilation. That's why we have to provide
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsync## implementations with mangled function names.
f3abe19bdaeea1b354674327ee95707281a6ad83vboxsync## bird: Why don't we just extern "C" {} that file then?
f632be0ea31134f1ce343e84c90d7984d2bf96b2vboxsync## @todo thread2-r0drv-linux.c and assert-r0drv-linux.c
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0Drv_SOURCES.win.amd64 = $(RuntimeWin64ASM_SOURCES)
30a23dfc653298a09d77d3045cf873b1bd6ddecfvboxsyncRuntimeR0Drv_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES)
b14965bee0bfb359e6ce9db6beaa4add9935fe3cvboxsync r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.cpp \
$(PATH_INS)/gen-sys-hdrs/bus_if.h \
$(PATH_INS)/gen-sys-hdrs/device_if.h
# is in the backdoor logging and the lack of sup.h (which should be
RuntimeGuestR0_SOURCES := $(filter-out generic/RTLogWriteUser-generic.cpp, $(RuntimeR0Drv_SOURCES))
# RuntimeRC_SOURCES += common/time/timesupA.asm
RuntimeRC_SOURCES += common/time/timesupref.cpp
RuntimeRC_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES)
RuntimeRC_SOURCES += os2/sys0.asm
RuntimeEFCPP_SOURCES = r3/alloc-ef-cpp.cpp
# errmsg.cpp depends on a generated header.
common/err/errmsg.cpp_INCS = $(IPRT_OUT_DIR)
win/errmsgwin.cpp_INCS = $(IPRT_OUT_DIR)
$(lib)_common/err/errmsgxpcom.cpp_INCS = $(IPRT_OUT_DIR)
$(IPRT_OUT_DIR)/errmsgdata.h: \
$(VBOX_PATH_RUNTIME_SRC)/common/err/errmsg.sed \
$(PATH_ROOT)/include/iprt/err.h \
$(PATH_ROOT)/include/VBox/err.h \
$(IPRT_OUT_DIR)/errmsgcomdata.h: \
$(VBOX_PATH_RUNTIME_SRC)/common/err/errmsgcom.sed \
$$(PATH_SDK_WINPSDK_INC)/WinError.h \
$(IPRT_OUT_DIR)/errmsgvboxcomdata.h: \
$(VBOX_PATH_RUNTIME_SRC)/VBox/errmsgvboxcom.xsl \
VBOX_AWK := /usr/bin/awk
$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/bus_if.h \
$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/device_if.h \
$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/pci_if.h
$$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/bus_if.h: $(VBOX_FREEBSD_SRC)/kern/bus_if.m | $$(dir $$@)
$(QUIET)$(CP) -f $< $(@D)/bus_if.m
$(QUIET)$(RM) $(@D)/bus_if.m
$$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/device_if.h: $(VBOX_FREEBSD_SRC)/kern/device_if.m | $$(dir $$@)
$(QUIET)$(CP) -f $< $(@D)/device_if.m
$(QUIET)$(RM) $(@D)/device_if.m
$$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/pci_if.h: $(VBOX_FREEBSD_SRC)/dev/pci/pci_if.m | $$(dir $$@)
$(QUIET)$(CP) -f $< $(@D)/pci_if.m
$(QUIET)$(RM) $(@D)/pci_if.m
# Aliases for .cpp.h files so we can more easily do syntax checking from the editor.
$(PATH_ROOT)/include/iprt \
$(PATH_ROOT)/include/iprt/cpp \
$(PATH_ROOT)/include/iprt/linux \
$(PATH_ROOT)/include/iprt/nocrt \
$(PATH_ROOT)/include/iprt/nocrt/x86 \
$(PATH_ROOT)/include/iprt/nocrt/amd64 \
$(PATH_ROOT)/include/iprt/nocrt/compiler \
$(VBOX_PATH_RUNTIME_SRC)/include/internal \
$(VBOX_PATH_RUNTIME_SRC)/common/alloc \
$(VBOX_PATH_RUNTIME_SRC)/common/asm \
$(VBOX_PATH_RUNTIME_SRC)/common/checksum \
$(VBOX_PATH_RUNTIME_SRC)/common/dbg \
$(VBOX_PATH_RUNTIME_SRC)/common/err \
$(VBOX_PATH_RUNTIME_SRC)/common/ldr \
$(VBOX_PATH_RUNTIME_SRC)/common/log \
$(VBOX_PATH_RUNTIME_SRC)/common/math \
$(VBOX_PATH_RUNTIME_SRC)/common/math/amd64 \
$(VBOX_PATH_RUNTIME_SRC)/common/math/gcc \
$(VBOX_PATH_RUNTIME_SRC)/common/math/x86 \
$(VBOX_PATH_RUNTIME_SRC)/common/misc \
$(VBOX_PATH_RUNTIME_SRC)/common/path \
$(VBOX_PATH_RUNTIME_SRC)/common/rand \
$(VBOX_PATH_RUNTIME_SRC)/common/string \
$(VBOX_PATH_RUNTIME_SRC)/common/table \
$(VBOX_PATH_RUNTIME_SRC)/common/time \
$(foreach dir, $(VBOX_PATH_RUNTIME_SRC) $(VBOX_PATH_RUNTIME_SRC)/r3 $(VBOX_PATH_RUNTIME_SRC)/r0drv,\
$(PATH_ROOT)/include/iprt/cdefs.h \
$(PATH_ROOT)/include/iprt/types.h \
$(PATH_ROOT)/include/iprt/runtime.h \
$(PATH_ROOT)/include/iprt/param.h \
$(PATH_ROOT)/include/iprt/assert.h \
$(PATH_ROOT)/include/iprt/asm.h \
$(filter-out %.cpp.h, $(sort $(wildcard $(addsuffix /*.h, $(IPRT_DOXYFILE_INPUT_DIRS)))) ) \
IPRT_DOXYFILE_OUTPUT = $(PATH_OUT)/docs/iprt
includedep $(IPRT_OUT_DIR)/Doxyfile.iprt.dep
$(IPRT_OUT_DIR)/Doxyfile.iprt: \
$(VBOX_PATH_RUNTIME_SRC)/Makefile.kmk \
$(APPEND) $@.tmp "INCLUDE_PATH = $(PATH_ROOT)/include include . common/table"
$(APPEND) $@.tmp "INCLUDE_FILE_PATTERNS = *.cpp.h"
$(IPRT_OUT_DIR)/docs.iprt: $(IPRT_OUT_DIR)/Doxyfile.iprt $$(IPRT_DOXYFILE_INPUT) | $(IPRT_DOXYFILE_OUTPUT)/
$(RM) -f $(wildcard $(IPRT_DOXYFILE_OUTPUT)/html/*) $(IPRT_OUT_DIR)/docs.iprt
doxygen $(IPRT_OUT_DIR)/Doxyfile.iprt
$(APPEND) $(IPRT_OUT_DIR)/docs.iprt
docs: $(IPRT_OUT_DIR)/docs.iprt
include $(KBUILD_PATH)/subfooter.kmk