Makefile.kmk revision 4323bf3414eb81836a7e6211b5ced9f6e65d02f3
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# $Id$
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync## @file
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# Makefile for the Cross Platform Guest Additions Driver.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# Copyright (C) 2007 Oracle Corporation
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# available from http://www.virtualbox.org. This file is free software;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# you can redistribute it and/or modify it under the terms of the GNU
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# General Public License (GPL) as published by the Free Software
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncSUB_DEPTH = ../../../../..
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncinclude $(KBUILD_PATH)/subheader.kmk
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncif1of ($(KBUILD_TARGET), freebsd $(if $(defined VBOX_WITH_ADDITION_DRIVERS),linux,) os2 solaris)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # VBoxGuest - The Guest Additions Driver (mixed case).
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync SYSMODS += VBoxGuest
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_TEMPLATE = VBOXGUESTR0
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_NAME.freebsd = vboxguest
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_NAME.linux = vboxguest
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_NAME.solaris = vboxguest
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_NOINST.linux = true
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_DEFS.linux = KBUILD_MODNAME=KBUILD_STR\(vboxguest\) KBUILD_BASENAME=KBUILD_STR\(vboxguest\) DEBUG_HASH=2 DEBUG_HASH2=3 EXPORT_SYMTAB
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_DEFS.solaris = VBOX_SVN_REV=$(VBOX_SVN_REV)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_DEPS.solaris += $(VBOX_SVN_REV_KMK)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_DEPS.linux += $(VBOX_SVN_REV_HEADER)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_DEPS.freebsd += $(VBOX_SVN_REV_HEADER)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_DEFS = VBGL_VBOXGUEST VBOX_WITH_HGCM
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_INCS = .
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_INCS.freebsd = $(PATH_VBoxGuest) $(PATH_INS)/gen-sys-hdrs
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_INCS.linux = ../../../Runtime/r0drv/linux
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync ifneq ($(KBUILD_TARGET),os2)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync ifn1of ($(KBUILD_TARGET), linux freebsd solaris)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_SOURCES = VBoxGuest-$(KBUILD_TARGET).cpp
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync else
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_SOURCES = VBoxGuest-$(KBUILD_TARGET).c
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync endif
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_SOURCES += \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest.cpp \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxHelper.cpp
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_LIBS = \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_LIB_VBGL_R0BASE) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_LIB_IPRT_GUEST_R0)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_ORDERDEPS.freebsd = \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(PATH_INS)/gen-sys-hdrs/pci_if.h \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(PATH_INS)/gen-sys-hdrs/bus_if.h \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(PATH_INS)/gen-sys-hdrs/device_if.h
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync else # OS/2:
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # The library order is crucial, so a bit of trickery is necessary.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # A library is used to make sure that VBoxGuestA-os2.asm is first in the link. (temporary hack?)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_SOURCES = \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestA-os2.asm \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest-os2.def
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #VBoxGuest_LDFLAGS = -s -t -v
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest_LIBS = \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(TARGET_VBoxGuestLibOs2Hack) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_LIB_VBGL_R0BASE) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_LIB_IPRT_GUEST_R0) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_GCC_LIBGCC) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync end
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync ## When debugging init with kDrvTest:
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #VBoxGuest_NAME = VBoxGst
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # see
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync LIBRARIES += VBoxGuestLibOs2Hack
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestLibOs2Hack_TEMPLATE = VBOXGUESTR0LIB
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestLibOs2Hack_NOINST = true
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestLibOs2Hack_DEFS = $(VBoxGuest_DEFS)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestLibOs2Hack_INCS = \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync . \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(PATH_ROOT)/src/VBox/Runtime/include # for the os2ddk
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestLibOs2Hack_SOURCES = \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest-os2.cpp \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuest.cpp
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync endif # OS/2
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncendif # enabled
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncifeq ($(KBUILD_TARGET),linux)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # Install the source files and script(s).
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync include $(PATH_SUB_CURRENT)/linux/files_vboxguest
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # sources and stuff.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync INSTALLS += vboxguest-src
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_INST = $(INST_ADDITIONS)src/vboxguest/
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_MODE = a+r,u+w
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_SOURCES = $(subst ",,$(FILES_VBOXGUEST_NOBIN))
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_SOURCES += $(if $(VBOX_OSE),,$(vboxguest-sh_0_OUTDIR)/dkms.conf)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_CLEAN = $(vboxguest-sh_0_OUTDIR)/dkms.conf
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $$(vboxguest-sh_0_OUTDIR)/dkms.conf: \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(PATH_SUB_CURRENT)/linux/dkms.conf \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_VERSION_STAMP) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync | $$(dir $$@)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(call MSG_TOOL,Creating,,$@)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" --output $@ $<
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # scripts.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync INSTALLS += vboxguest-sh
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-sh_INST = $(INST_ADDITIONS)src/vboxguest/
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-sh_MODE = a+rx,u+w
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-sh_SOURCES = $(subst ",,$(FILES_VBOXGUEST_BIN))
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-sh_SOURCES += $(if $(VBOX_OSE),,$(PATH_ROOT)/src/VBox/HostDrivers/linux/do_Module.symvers)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-sh_SOURCES += $(vboxguest-sh_0_OUTDIR)/build_in_tmp
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-sh_CLEAN = $(vboxguest-sh_0_OUTDIR)/build_in_tmp
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $$(vboxguest-sh_0_OUTDIR)/build_in_tmp: \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(PATH_ROOT)/src/VBox/HostDrivers/linux/build_in_tmp \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(VBOX_VERSION_STAMP) \
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync | $$(dir $$@)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(call MSG_TOOL,Creating,,$@)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g; s;_MODULE_;vboxguest;g; s;_BUILDTYPE_;${KBUILD_TYPE};g" --output $@ $<
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync $(QUIET)$(CHMOD) 0755 $@
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncendif # Linux
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncifeq ($(KBUILD_TARGET),freebsd)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # Install the source files and script(s).
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync #
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync include $(PATH_SUB_CURRENT)/freebsd/files_vboxguest
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync # sources and stuff.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync INSTALLS += vboxguest-src
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_INST = $(INST_ADDITIONS)src/vboxguest/
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_MODE = a+r,u+w
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync vboxguest-src_SOURCES = $(subst ",,$(FILES_VBOXGUEST_NOBIN))
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncendif # FreeBSD
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsyncinclude $(KBUILD_PATH)/subfooter.kmk
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync