Makefile revision 5a4d5e0a9fbeedae85826992b32e19a14fe4c01b
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# $Revision$
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu## @file
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# VirtualBox Guest Additions Module Makefile.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# Copyright (C) 2006-2011 Oracle Corporation
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# This file is part of VirtualBox Open Source Edition (OSE), as
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# available from http://www.virtualbox.org. This file is free software;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# you can redistribute it and/or modify it under the terms of the GNU
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# General Public License (GPL) as published by the Free Software
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# Foundation, in version 2 as it comes in the "COPYING" file of the
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu# Linux kbuild sets this to our source directory if we are called from there
4df55fde49134f9735f84011f23a767c75e393c7Janie Luobj ?= $(CURDIR)
4df55fde49134f9735f84011f23a767c75e393c7Janie Luinclude $(obj)/Makefile.include.header
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_NAME = vboxguest
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_OBJS = \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu VBoxGuest-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu VBoxGuest.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu VBoxGuest2.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu GenericRequest.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu HGCMInternal.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu Init.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu PhysHeap.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu SysHlp.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu VMMDev.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/alloc-r0drv.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/initterm-r0drv.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/memobj-r0drv.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/mpnotification-r0drv.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/powernotification-r0drv.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/alloc-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/assert-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/initterm-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/memobj-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/memuserkernel-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/mp-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/mpnotification-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/process-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/semevent-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/semeventmulti-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/semfastmutex-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/semmutex-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/spinlock-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/thread-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/thread2-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/linux/time-r0drv-linux.o \
71b428bebcb3bd69d99d304083ab5f83cbd41bbeCheng Sean Ye r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu r0drv/generic/semspinmutex-r0drv-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/alloc/alloc.o \
71b428bebcb3bd69d99d304083ab5f83cbd41bbeCheng Sean Ye common/err/RTErrConvertFromErrno.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/err/RTErrConvertToErrno.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/log/log.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/log/logellipsis.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/log/logrel.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/log/logrelellipsis.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/log/logcom.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/log/logformat.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg1Weak.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg2.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg2Add.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg2AddWeak.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg2AddWeakV.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg2Weak.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/RTAssertMsg2WeakV.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/assert.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/misc/thread.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/RTStrCopy.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/RTStrCopyP.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/strformat.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/strformatrt.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/strformattype.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/strprintf.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string/strtonum.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/table/avlpv.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/time/time.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTAssertShouldPanic-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTLogWriteStdErr-stub-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTLogWriteStdOut-stub-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTSemEventWait-2-ex-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTSemEventWaitNoResume-2-ex-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTSemEventMultiWait-2-ex-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/RTSemEventMultiWaitNoResume-2-ex-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu generic/errvars-generic.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu VBox/log-vbox.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu VBox/logbackdoor.o
4df55fde49134f9735f84011f23a767c75e393c7Janie Luifeq ($(BUILD_TARGET_ARCH),x86)
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_OBJS += \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/math/gcc/divdi3.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/math/gcc/moddi3.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/math/gcc/udivdi3.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/math/gcc/umoddi3.o \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/math/gcc/qdivrem.o
4df55fde49134f9735f84011f23a767c75e393c7Janie Luendif
4df55fde49134f9735f84011f23a767c75e393c7Janie Luifeq ($(BUILD_TARGET_ARCH),amd64)
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_OBJS += common/alloc/heapsimple.o
4df55fde49134f9735f84011f23a767c75e393c7Janie Luendif
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_DEFS = -DVBOX -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_GUEST \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu -DIN_GUEST_R0 -DIN_MODULE -DRT_WITH_VBOX -DVBGL_VBOXGUEST \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu -DVBOX_WITH_HGCM
4df55fde49134f9735f84011f23a767c75e393c7Janie Luifeq ($(BUILD_TARGET_ARCH),amd64)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MOD_DEFS += -DRT_ARCH_AMD64
4df55fde49134f9735f84011f23a767c75e393c7Janie Luelse
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MOD_DEFS += -DRT_ARCH_X86
4df55fde49134f9735f84011f23a767c75e393c7Janie Luendif
4df55fde49134f9735f84011f23a767c75e393c7Janie Luifeq ($(BUILD_TARGET_ARCH),amd64)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MOD_DEFS += -DVBOX_WITH_64_BITS_GUESTS
4df55fde49134f9735f84011f23a767c75e393c7Janie Luendif
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_INCL += $(addprefix -I$(KBUILD_EXTMOD)/vboxguest,/ /include /r0drv/linux)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luifneq ($(wildcard $(KBUILD_EXTMOD)/vboxguest),)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MANGLING := $(KBUILD_EXTMOD)/vboxguest/include/VBox/VBoxGuestMangling.h
4df55fde49134f9735f84011f23a767c75e393c7Janie Luelse
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h
4df55fde49134f9735f84011f23a767c75e393c7Janie Luendif
4df55fde49134f9735f84011f23a767c75e393c7Janie Luifeq ($(KERN_VERSION),24)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ## @todo move to MOD_DEFS when we have finished refactoring
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MOD_CFLAGS = -DEXPORT_SYMTAB
4df55fde49134f9735f84011f23a767c75e393c7Janie Luelse
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MOD_CFLAGS = -include $(MANGLING)
4df55fde49134f9735f84011f23a767c75e393c7Janie Luendif
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie LuMOD_CLEAN = . linux r0drv generic r0drv/linux r0drv/generic VBox \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/alloc common/err common/log common/math/gcc common/misc \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu common/string common/time
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luinclude $(obj)/Makefile.include.footer
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lucheck: $(MOD_NAME)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu @if ! readelf -p __ksymtab_strings vboxguest.ko | grep -E "\[.*\] *(RT|g_..*RT.*)"; then \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu echo "All exported IPRT symbols are properly renamed!"; \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu else \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu echo "error: Some exported IPRT symbols was not properly renamed! See above." >&2; \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu false; \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu fi
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu