Makefile.kmk revision 5cd8fe97d821846b448a9cf642d0fb78faa139e5
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync# Top-level sub-makefile for the devices, drivers and services.
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync# Copyright (C) 2006-2012 Oracle Corporation
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync# available from http://www.virtualbox.org. This file is free software;
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync# you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync# General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsyncSUB_DEPTH = ../../..
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsyncinclude $(KBUILD_PATH)/subheader.kmk
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync# Make sure our Config.kmk is included.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsyncifndef VBOX_DEVICES_CONFIG_KMK_INCLUDED
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync include $(PATH_SUB_CURRENT)/Config.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync# Include sub-makefiles.
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsyncinclude $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsyncif defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/PC/PXE/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsyncelse if defined(VBOX_WITH_PXE_ROM)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync if !defined(VBOX_WITHOUT_ETHERBOOT)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/PC/Etherboot-src/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync if !defined(VBOX_WITHOUT_IPXE)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/PC/ipxe/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsyncif !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file.
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/BiosCommonCode/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/PC/BIOS/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_NEW_VGABIOS
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/Graphics/BIOS-new/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/Graphics/BIOS/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_EFI
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync include $(PATH_SUB_CURRENT)/EFI/Thunk/Makefile.kmk
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync # Main targets.
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync LIBRARIES += ServicesR0
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync DLLS += VBoxDDU VBoxDD VBoxDD2
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync SYSMODS += VBoxDDR0 VBoxDD2R0
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_RAW_MODE
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync SYSMODS += VBoxDDGC VBoxDD2GC
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync # VBoxDDU (shared object)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_TEMPLATE = VBoxR3DllWarnNoPic
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_NAME = $(basename $(notdir $(LIB_DDU)))
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_INST.darwin = $(INST_DLL) $(INST_TESTCASE)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_DEFS = IN_VBOXDDU
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_VUSB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_DEFS += VBOX_WITH_VUSB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_USB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_DEFS += VBOX_WITH_EHCI_IMPL
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_SOURCES = \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_USB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LIBS = \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync $(LIB_RUNTIME) \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync $(PATH_STAGE_LIB)/StorageLib$(VBOX_SUFF_LIB)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_USB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LIBS += \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync $(PATH_STAGE_LIB)/USBLib$(VBOX_SUFF_LIB)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync $(PATH_STAGE_LIB)/VBoxDrvCfg$(VBOX_SUFF_LIB) \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync $(PATH_SDK_$(VBOX_WINDDK)_LIB)/Newdev.lib
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifeq ($(KBUILD_TARGET),l4)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LIBS += \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDDU.dylib
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_USB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LDFLAGS.darwin += -framework IOKit
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LDFLAGS.linux = -Wl,--no-undefined
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDU_LDFLAGS.l4 = -Wl,--no-undefined
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync # VBoxDDULnxHostR3 (Only needed for l4, currently for executing vditool on L4Linux.)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifeq ($(KBUILD_TARGET),l4)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync LIBRARIES += VBoxDDULnxHostR3
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDULnxHostR3_TEMPLATE = VBOXLNXHOSTR3LIB
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDULnxHostR3_DEFS = IN_VBOXDDU
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDDULnxHostR3_SOURCES = $(VBoxDDU_SOURCES)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync # VBoxDD (shared object)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_TEMPLATE = VBoxR3DllWarnNoPic
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK) VBOX_NTDLL
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync Storage/DrvHostDVD.cpp_SDKS.win = ReorderCompilerIncs $(VBOX_WINDDK)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_INCS = \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_DEFS = \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBOX_ACPI \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBOX_HGCM_HOST_CODE \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBOX_WITH_HGCM \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync $(if $(VBOX_BIOS_DMI_FALLBACK),VBOX_BIOS_DMI_FALLBACK,) \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBOX_WITH_DMI_CHASSIS \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBOX_WITH_DMI_OEMSTRINGS
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_DEFS.win = _WIN32_WINNT=0x0510
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync ifeq ($(KBUILD_TARGET_ARCH),x86)
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_SOURCES = \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_LIBS = # more later.
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD.dylib \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync -framework CoreAudio \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync -framework AudioUnit \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync -framework AudioToolbox \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync -framework IOKit \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync -framework Carbon \
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync -framework DiskArbitration
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_LDFLAGS.linux = -Wl,--no-undefined
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync VBoxDD_LDFLAGS.l4 = -Wl,--no-undefined
ababd7e83ee3d23c5191a0d3802f10764df69e36vboxsync # --- Tracing bits. ---
VBoxDD_SOURCES += build/VBoxDD.d
VBoxDD_DEFS.darwin += VUSB_HAVE_USBPROXY_DEVICE
VBoxDD_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN
VBoxDD_DEFS.linux += \
VBoxDD_SOURCES.linux += \
VBoxDD_DEFS.l4 += VUSB_HAVE_USBPROXY_DEVICE
VBoxDD_SOURCES.l4 += \
VBoxDD_DEFS.os2 += VUSB_HAVE_USBPROXY_DEVICE
VBoxDD_SOURCES.os2 += \
VBoxDD_DEFS.win += VUSB_HAVE_USBPROXY_DEVICE
VBoxDD_SOURCES.win += \
VBoxDD_DEFS.solaris += VUSB_HAVE_USBPROXY_DEVICE
VBoxDD_DEFS.freebsd += VUSB_HAVE_USBPROXY_DEVICE
Network/lwip/src/api/sockets.c_CFLAGS = $(VBOX_GCC_Wno-address)
VBoxDD_SOURCES.linux += \
VBoxDD_SOURCES += EFI/DevEFI.cpp
VBoxDD_DEFS.linux += VBOX_WITH_ALSA
VBoxDD_SOURCES.linux += \
VBoxDD_DEFS.linux += VBOX_WITH_PULSE
VBoxDD_SOURCES.linux += \
VBoxDD_DEFS.freebsd += VBOX_WITH_PULSE
VBOX_SLIRP_SOURCES += Network/slirp/bsd/kern/subr_sbuf.c
Network/slirp/misc.c_DEFS += $(if $(VBOX_NAT_MEM_DEBUG),VBOX_NAT_MEM_DEBUG,)
$(1)/slirp/bsd/sys \
$(1)/slirp/bsd/sys/sys \
$(1)/slirp/bsd/$(VBOX_SLIRP_BSD_ARCH)/include \
$(1)/slirp/bsd/netinet \
$(1)/slirp/libalias
$(1)/slirp/libalias \
$(1)/slirp/dnsproxy
$(file)_INCS += $(1)/slirp/dnsproxy
$(filter-out Storage/DrvHostFloppy%, $(VBoxDD_SOURCES)) \
VBoxDD_SOURCES.l4 += \
VBoxDD_SOURCES.linux += \
VBoxDD_SOURCES := $(filter-out Storage/DrvHost%, $(VBoxDD_SOURCES))
VBoxDD_SOURCES := $(filter-out Storage/DrvHostFloppy%, $(VBoxDD_SOURCES))
VBoxDD_SOURCES += Audio/ossaudio.c
VBoxDD_DEFS.win += VBOX_WITH_WIN_PARPORT_SUP
VBoxDD_SOURCES.win += \
VBoxDD_DEFS.win += VBOX_NETFLT_ONDEMAND_BIND
$(PATH_STAGE_LIB)/VBoxDD2.lib \
$(PATH_SDK_$(VBOX_WINDDK)_LIB)/dxguid.lib
$(L4_LIBDIR)/libl4sys.p.a
VBoxDD_LIBS.darwin += \
VBoxDD_CLEAN += $(VBoxDD_0_OUTDIR)/vboxdsl.hex
$(VBoxDD_0_OUTDIR)/vboxaml.hex \
$(VBoxDD_0_OUTDIR)/vboxaml.aml \
$(VBoxDD_0_OUTDIR)/vboxssdt-standard.hex \
$(VBoxDD_0_OUTDIR)/vboxssdt-standard.aml \
$(VBoxDD_0_OUTDIR)/vboxssdt-standard.aml.tmp \
$(VBoxDD_0_OUTDIR)/vboxssdt-cpuhotplug.hex \
$(VBoxDD_0_OUTDIR)/vboxssdt-cpuhotplug.aml \
$(VBoxDD_0_OUTDIR)/vboxssdt-cpuhotplug.aml.tmp \
$(VBoxDD_0_OUTDIR)/vboxssdt-cpuhotplug.aml.pre
$(VBoxDD_0_OUTDIR)/vboxaml.hex \
$(VBoxDD_0_OUTDIR)/vboxssdt-standard.hex \
$(VBoxDD_0_OUTDIR)/vboxssdt-cpuhotplug.hex
$(QUIET)$(SED) "s/AmlCode/AmlCodeSsdtStandard/g" \
$$(VBoxDD_0_OUTDIR)/vboxssdt-cpuhotplug.hex: $(PATH_SUB_CURRENT)/PC/vbox-cpuhotplug.dsl | $$(dir $$@)
$(QUIET)$(SED) "s/AmlCode/AmlCodeSsdtCpuHotPlug/g" \
PC/ACPI/VBoxAcpi.cpp_INCS = $(VBoxDD_0_OUTDIR)
Bus/DevPCI.cpp_INCS = Bus
Bus/DevPciIch9.cpp_INCS = Bus
Bus/MsiCommon.cpp_INCS = Bus
Bus/MsixCommon.cpp_INCS = Bus
Bus/DevPciRaw.cpp_INCS = Bus
Graphics/DevVGA.cpp_INCS = $(VgaBiosBin_0_OUTDIR)
VBoxDDGC_DEFS.darwin = VBOX_WITH_2X_4GB_ADDR_SPACE
$(if $(VBOX_WITH_PXE_ROM),$(if $(VBOX_WITHOUT_IPXE),$(PATH_STAGE_LIB)/NetBiosBin$(VBOX_SUFF_LIB),$(PATH_STAGE_LIB)/iPxeBiosBin$(VBOX_SUFF_LIB)),) \
$(L4_LIBDIR)/libl4sys.p.a
VBoxDD2_LIBS.darwin += $(LIB_REM)
VBoxDD2_LDFLAGS.linux = -Wl,--no-undefined
VBoxDD2_LDFLAGS.l4 = -Wl,--no-undefined
VBoxDDR0_DEFS.darwin.x86= VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 VBOX_WITH_2X_4GB_ADDR_SPACE
VBoxDDR0_DEFS.win += VBOX_WITH_WIN_PARPORT_SUP
VBoxDDR0_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
# Ring-0 Services (library, linked into VMMR0.r0)
$(if $(VBOX_WITH_PCI_PASSTHROUGH),Bus/SrvPciRawR0.cpp,)
Network/SrvIntNetR0.cpp_CXXFLAGS := $(if-expr $(KBUILD_TARGET) == "win",,$(VBOX_GCC_Wno-array_bounds))
VBoxEhciR3_SOURCES = USB/DevEHCI.cpp
VBoxEhciR0_SOURCES = USB/DevEHCI.cpp
VBoxEhciRC_SOURCES = USB/DevEHCI.cpp
VBoxPciRawR3_SOURCES = Bus/DevPciRaw.cpp
VBoxPciRawDrv_SOURCES = Bus/DrvPciRaw.cpp
VBoxPciRawR0_SOURCES = Bus/DevPciRaw.cpp
Bus/DevPciRaw.cpp_INCS = Bus