51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# $Id$
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync## @file
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Sub-Makefile for the VNC Extension Pack.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Copyright (C) 2010-2012 Oracle Corporation
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# available from http://www.virtualbox.org. This file is free software;
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# you can redistribute it and/or modify it under the terms of the GNU
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# General Public License (GPL) as published by the Free Software
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
fd6216f38cf1810bf6680af2d56fae226be2582avboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncSUB_DEPTH = ../../../..
772269936494ffaddd0750ba9e28e805ba81398cvboxsyncinclude $(KBUILD_PATH)/subheader.kmk
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Extend the extension pack templates.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxR3ExtPackVNC = For the ring-3 context modules in the VNC extension pack.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxR3ExtPackVNC_EXTENDS = VBoxR3ExtPack
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxR3ExtPackVNC_INST = $(INST_EXTPACK)VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxR0ExtPackVNC = For the ring-0 context modules in the VNC extension pack.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxR0ExtPackVNC_EXTENDS = VBoxR0ExtPack
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxR0ExtPackVNC_INST = $(INST_EXTPACK)VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxRcExtPackVNC = For the raw-mode context modules in the VNC extension pack.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxRcExtPackVNC_EXTENDS = VBoxRcExtPack
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxRcExtPackVNC_INST = $(INST_EXTPACK)VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxInsExtPackVNC = For the install targets of an extension pack.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxInsExtPackVNC_EXTENDS = VBoxR0ExtPack
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncTEMPLATE_VBoxInsExtPackVNC_INST = $(INST_EXTPACK)VNC/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Globals.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBOX_VNC_NAME = VNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBOX_VNC_MANGLED_NAME = VNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBOX_PATH_EXTPACK_VNC = $(PATH_STAGE)/$(INST_EXTPACK)VNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# VBoxVNCMain - The module which the VirtualBox Main API talks to.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncDLLS += VBoxVNCMain
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNCMain_TEMPLATE = VBoxR3ExtPackVNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNCMain_SOURCES = VBoxVNCMain.cpp
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNCMain_DEFS =
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# VBoxVNC - The VNC VRDE module.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncDLLS += VBoxVNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNC_TEMPLATE = VBoxR3ExtPackVNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNC_SOURCES = VBoxVNC.cpp
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# NOTE: vncserver is covered by GPL, so the extpack must be GPL, too.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNC_LIBS = vncserver
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNC_DEFS =
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Install the description.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncINSTALLS += VBoxVNCIns
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNCIns_TEMPLATE = VBoxInsExtPackVNC
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBoxVNCIns_SOURCES = \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBoxVNCIns_0_OUTDIR)/ExtPack.xml \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(PATH_ROOT)/doc/License-gpl-2.html=>ExtPack-license.html \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(PATH_ROOT)/doc/License-gpl-2.txt=>ExtPack-license.txt \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(PATH_ROOT)/doc/License-gpl-2.rtf=>ExtPack-license.rtf
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync$(call VBOX_EDIT_VERSION_RULE_FN,VBoxVNCIns,ExtPack.xml)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Packing.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync#
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncifndef VBOX_WITHOUT_EXTPACK_VNC_PACKING
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync PACKING += $(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED_NAME)-$(VBOX_VERSION_STRING)r$(VBOX_SVN_REV).vbox-extpack
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncifndef VBOX_WITH_EXTPACK_OS_ARCHS
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_WITH_EXTPACK_OS_ARCHS = $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Build the file list. The macro takes 1=darwin.x86, 2=dist/VirtualBox.app/Contents/MacOS, 3=dylib
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBOX_VNC_FILES_MACRO = \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(PATH_OUT_BASE)/$(1)/$(KBUILD_TYPE)/$(2)/ExtensionPacks/$(VBOX_VNC_MANGLED_NAME)/$(1)/VBoxVNCMain.$(3)=>$(1)/VBoxVNCMain.$(3) \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(PATH_OUT_BASE)/$(1)/$(KBUILD_TYPE)/$(2)/ExtensionPacks/$(VBOX_VNC_MANGLED_NAME)/$(1)/VBoxVNC.$(3)=>$(1)/VBoxVNC.$(3)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncVBOX_VNC_FILES := \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBOX_PATH_EXTPACK_VNC)/ExtPack.xml=>ExtPack.xml \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBOX_PATH_EXTPACK_VNC)/ExtPack-license.html=>ExtPack-license.html \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBOX_PATH_EXTPACK_VNC)/ExtPack-license.rtf=>ExtPack-license.rtf \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBOX_PATH_EXTPACK_VNC)/ExtPack-license.txt=>ExtPack-license.txt
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (darwin.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,darwin.amd64,dist/VirtualBox.app/Contents/MacOS,dylib)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (darwin.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,darwin.x86,dist/VirtualBox.app/Contents/MacOS,dylib)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (freebsd.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,freebsd.amd64,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (freebsd.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,freebsd.x86,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (linux.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,linux.amd64,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (linux.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,linux.x86,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (os2.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,os2.x86,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (solaris.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,solaris.amd64,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (solaris.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,solaris.x86,bin,so)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (win.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,win.amd64,bin,dll)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncif1of (win.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,win.x86,bin,dll)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncendif
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Pack it all up using a temporary staging directory.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync$(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED_NAME)-$(VBOX_VERSION_STRING)r$(VBOX_SVN_REV).vbox-extpack: \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $$(foreach file, $$(VBOX_VNC_FILES), $$(firstword $$(subst =>,$$(SP),$$(file)))) \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync | $(VBOX_PATH_PACKAGES)/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(RM) -f $(wildcard $(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED_NAME)-*.vbox-extpack) \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBoxVNCIns_0_OUTDIR)/ExtPack.manifest \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBoxVNCIns_0_OUTDIR)/ExtPack.signature
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Stage all the files
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(RM) -Rf $(VBoxVNCIns_0_OUTDIR)/Stage/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(foreach file, $(VBOX_VNC_FILES),\
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(NLTAB)$(MKDIR) -p $(dir $(lastword $(subst =>,$(SP)$(VBoxVNCIns_0_OUTDIR)/Stage/,$(file)))) \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(NLTAB)$(CP) $(subst =>,$(SP)$(VBoxVNCIns_0_OUTDIR)/Stage/,$(file)) )
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Create the manifest
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBOX_RTMANIFEST) \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync --manifest $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.manifest \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync --chdir $(VBoxVNCIns_0_OUTDIR)/Stage/ \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(foreach file, $(VBOX_VNC_FILES), $(lastword $(subst =>,$(SP),$(file))))
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(APPEND) $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.signature "todo"
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(CHMOD) a+r \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.manifest \
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.signature
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Tar it up.
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync tar -cvf - -C $(VBoxVNCIns_0_OUTDIR)/Stage/ . | gzip -9c > $@
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync# Clean up
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync $(RM) -Rf $(VBoxVNCIns_0_OUTDIR)/Stage/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsyncBLDDIRS += $(VBOX_PATH_PACKAGES)/
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync
772269936494ffaddd0750ba9e28e805ba81398cvboxsyncinclude $(FILE_KBUILD_SUB_FOOTER)
51a909d272137afafb6e48492caa2ed38c4c9f77vboxsync