# $Id: Makefile.kmk 40383 2012-03-06 16:14:40Z vboxsync $ ## @file # Sub-Makefile for the VNC Extension Pack. # # # Copyright (C) 2010-2012 Oracle Corporation # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # SUB_DEPTH = ../../../.. include $(KBUILD_PATH)/subheader.kmk # # Extend the extension pack templates. # TEMPLATE_VBoxR3ExtPackVNC = For the ring-3 context modules in the VNC extension pack. TEMPLATE_VBoxR3ExtPackVNC_EXTENDS = VBoxR3ExtPack TEMPLATE_VBoxR3ExtPackVNC_INST = $(INST_EXTPACK)VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ TEMPLATE_VBoxR0ExtPackVNC = For the ring-0 context modules in the VNC extension pack. TEMPLATE_VBoxR0ExtPackVNC_EXTENDS = VBoxR0ExtPack TEMPLATE_VBoxR0ExtPackVNC_INST = $(INST_EXTPACK)VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ TEMPLATE_VBoxRcExtPackVNC = For the raw-mode context modules in the VNC extension pack. TEMPLATE_VBoxRcExtPackVNC_EXTENDS = VBoxRcExtPack TEMPLATE_VBoxRcExtPackVNC_INST = $(INST_EXTPACK)VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ TEMPLATE_VBoxInsExtPackVNC = For the install targets of an extension pack. TEMPLATE_VBoxInsExtPackVNC_EXTENDS = VBoxR0ExtPack TEMPLATE_VBoxInsExtPackVNC_INST = $(INST_EXTPACK)VNC/ # # Globals. # VBOX_VNC_NAME = VNC VBOX_VNC_MANGLED_NAME = VNC VBOX_PATH_EXTPACK_VNC = $(PATH_STAGE)/$(INST_EXTPACK)VNC # # VBoxVNCMain - The module which the VirtualBox Main API talks to. # DLLS += VBoxVNCMain VBoxVNCMain_TEMPLATE = VBoxR3ExtPackVNC VBoxVNCMain_SOURCES = VBoxVNCMain.cpp VBoxVNCMain_DEFS = # # VBoxVNC - The VNC VRDE module. # DLLS += VBoxVNC VBoxVNC_TEMPLATE = VBoxR3ExtPackVNC VBoxVNC_SOURCES = VBoxVNC.cpp # NOTE: vncserver is covered by GPL, so the extpack must be GPL, too. VBoxVNC_LIBS = vncserver VBoxVNC_DEFS = # # Install the description. # INSTALLS += VBoxVNCIns VBoxVNCIns_TEMPLATE = VBoxInsExtPackVNC VBoxVNCIns_SOURCES = \ $(VBoxVNCIns_0_OUTDIR)/ExtPack.xml \ $(PATH_ROOT)/doc/License-gpl-2.html=>ExtPack-license.html \ $(PATH_ROOT)/doc/License-gpl-2.txt=>ExtPack-license.txt \ $(PATH_ROOT)/doc/License-gpl-2.rtf=>ExtPack-license.rtf $(call VBOX_EDIT_VERSION_RULE_FN,VBoxVNCIns,ExtPack.xml) # # Packing. # ifndef VBOX_WITHOUT_EXTPACK_VNC_PACKING PACKING += $(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED_NAME)-$(VBOX_VERSION_STRING)r$(VBOX_SVN_REV).vbox-extpack endif ifndef VBOX_WITH_EXTPACK_OS_ARCHS VBOX_WITH_EXTPACK_OS_ARCHS = $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) endif # Build the file list. The macro takes 1=darwin.x86, 2=dist/VirtualBox.app/Contents/MacOS, 3=dylib VBOX_VNC_FILES_MACRO = \ $(PATH_OUT_BASE)/$(1)/$(KBUILD_TYPE)/$(2)/ExtensionPacks/$(VBOX_VNC_MANGLED_NAME)/$(1)/VBoxVNCMain.$(3)=>$(1)/VBoxVNCMain.$(3) \ $(PATH_OUT_BASE)/$(1)/$(KBUILD_TYPE)/$(2)/ExtensionPacks/$(VBOX_VNC_MANGLED_NAME)/$(1)/VBoxVNC.$(3)=>$(1)/VBoxVNC.$(3) VBOX_VNC_FILES := \ $(VBOX_PATH_EXTPACK_VNC)/ExtPack.xml=>ExtPack.xml \ $(VBOX_PATH_EXTPACK_VNC)/ExtPack-license.html=>ExtPack-license.html \ $(VBOX_PATH_EXTPACK_VNC)/ExtPack-license.rtf=>ExtPack-license.rtf \ $(VBOX_PATH_EXTPACK_VNC)/ExtPack-license.txt=>ExtPack-license.txt if1of (darwin.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,darwin.amd64,dist/VirtualBox.app/Contents/MacOS,dylib) endif if1of (darwin.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,darwin.x86,dist/VirtualBox.app/Contents/MacOS,dylib) endif if1of (freebsd.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,freebsd.amd64,bin,so) endif if1of (freebsd.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,freebsd.x86,bin,so) endif if1of (linux.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,linux.amd64,bin,so) endif if1of (linux.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,linux.x86,bin,so) endif if1of (os2.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,os2.x86,bin,so) endif if1of (solaris.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,solaris.amd64,bin,so) endif if1of (solaris.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,solaris.x86,bin,so) endif if1of (win.amd64, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,win.amd64,bin,dll) endif if1of (win.x86, $(VBOX_WITH_EXTPACK_OS_ARCHS)) VBOX_VNC_FILES += $(call VBOX_VNC_FILES_MACRO,win.x86,bin,dll) endif # Pack it all up using a temporary staging directory. $(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED_NAME)-$(VBOX_VERSION_STRING)r$(VBOX_SVN_REV).vbox-extpack: \ $$(foreach file, $$(VBOX_VNC_FILES), $$(firstword $$(subst =>,$$(SP),$$(file)))) \ | $(VBOX_PATH_PACKAGES)/ $(RM) -f $(wildcard $(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED_NAME)-*.vbox-extpack) \ $(VBoxVNCIns_0_OUTDIR)/ExtPack.manifest \ $(VBoxVNCIns_0_OUTDIR)/ExtPack.signature # Stage all the files $(RM) -Rf $(VBoxVNCIns_0_OUTDIR)/Stage/ $(foreach file, $(VBOX_VNC_FILES),\ $(NLTAB)$(MKDIR) -p $(dir $(lastword $(subst =>,$(SP)$(VBoxVNCIns_0_OUTDIR)/Stage/,$(file)))) \ $(NLTAB)$(CP) $(subst =>,$(SP)$(VBoxVNCIns_0_OUTDIR)/Stage/,$(file)) ) # Create the manifest $(VBOX_RTMANIFEST) \ --manifest $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.manifest \ --chdir $(VBoxVNCIns_0_OUTDIR)/Stage/ \ $(foreach file, $(VBOX_VNC_FILES), $(lastword $(subst =>,$(SP),$(file)))) $(APPEND) $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.signature "todo" $(CHMOD) a+r \ $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.manifest \ $(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.signature # Tar it up. tar -cvf - -C $(VBoxVNCIns_0_OUTDIR)/Stage/ . | gzip -9c > $@ # Clean up $(RM) -Rf $(VBoxVNCIns_0_OUTDIR)/Stage/ BLDDIRS += $(VBOX_PATH_PACKAGES)/ include $(KBUILD_PATH)/subfooter.kmk