# $Id: Makefile.kmk 3845 2007-07-25 15:56:47Z vboxsync $ ## @file # Makefile for the Linux installer. # # # Copyright (C) 2007 innotek GmbH # # Use only with permission # DEPTH = ../../../.. include $(PATH_KBUILD)/header.kmk ifneq ($(BUILD_PLATFORM),linux) $(error "The Linux installer can only be built on Linux!") # yeah, right. endif PROGRAMS = VBoxTunctl PACKING = $(if $(VBOX_OSE),,$(PATH_BIN)/VirtualBox.run) PACKING += $(PATH_BIN)/VirtualBox.tar.bz2 OTHER_CLEAN = $(addprefix $(PATH_TARGET)/install/,\ install.sh deffiles routines.sh \ VBoxAddIF.sh vboxdrv.sh vboxnet.sh \ VirtualBox.tar.bz2 LICENSE) \ $(wildcard $(PATH_TARGET)/VirtualBox-*) INSTALLS = linux-bin linux-doc VBoxTunctl_TEMPLATE = VBOXR3EXE VBoxTunctl_SOURCES = tunctl.c # # Linux installs. # linux-bin_INST = bin/ linux-bin_MODE = a+rx,u+w linux-bin_SOURCES = \ VBox.sh=>VBox.sh linux-doc_INST = bin/ linux-doc_MODE = a+r,u+w linux-doc_SOURCES = \ $(if $(VBOX_OSE),,$(PATH_ROOT)/doc/License.txt=>LICENSE) \ VBox.png=>VBox.png # Strip these binaries LINUXSTRIPBIN = \ VBoxDD.so \ VBoxDD2.so \ VBoxManage \ VBoxREM.so \ VBoxRT.so \ $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \ VBoxSVC \ VBoxDDU.so \ VBoxVMM.so \ VBoxXML.so \ VBoxXPCOM.so \ VBoxXPCOMIPCD \ $(if $(VBOX_WITH_QTGUI),VirtualBox,) \ tstVMM \ VBoxTunctl \ components/VBoxC.so \ components/VBoxSVCM.so \ components/VBoxXPCOMIPCC.so # Don't remove relocation information of these binaries LINUXSTRIPOBJ = \ VBoxDD2GC.gc \ VBoxDD2R0.r0 \ VBoxDDGC.gc \ VBoxDDR0.r0 \ VMMGC.gc \ VMMR0.r0 ifeq ($(BUILD_TARGET_ARCH),amd64) LINUXSTRIPOBJ += \ VBoxREM2.rel endif # Don't strip anything of these files LINUXNOSTRIP = \ $(if $(VBOX_OSE),,LICENSE) \ components/VBoxXPCOMBase.xpt \ components/VirtualBox_XPCOM.xpt \ VBox.sh \ VBox.png \ VBoxAddIF.sh \ $(if $(VBOX_WITH_QTGUI),VirtualBox.desktop,) \ $(if $(VBOX_WITH_QTGUI),nls,) \ src \ sdk # Guest Additions LINUXNOSTRIP += \ $(if $(VBOX_OSE),,additions/VBoxGuestAdditions.iso) # Shared Folders LINUXSTRIPBIN += \ VBoxSharedFolders.so \ $(if $(VBOX_OSE),,VRDPAuth.so) # Shared Clipboard LINUXSTRIPBIN += \ VBoxSharedClipboard.so \ $(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so,) ifdef VBOX_WITH_DOCS LINUXNOSTRIP += \ UserManual.pdf ifeq ($(BUILD_TARGET_ARCH),x86) LINUXNOSTRIP += \ VirtualBox.chm LINUXSTRIPBIN += \ $(if $(VBOX_WITH_QTGUI),kchmviewer,) endif endif ifdef VBOX_WITH_VRDP LINUXSTRIPBIN += \ VBoxVRDP.so \ VBoxVRDP LINUXNOSTRIP += \ rdesktop-vrdp.tar.gz endif LINUXARCHFILES := $(LINUXSTRIPBIN) $(LINUXSTRIPOBJ) $(LINUXNOSTRIP) OTHER_CLEAN += $(addprefix $(PATH_TARGET)/archive/,$(LINUXARCHFILES)) include $(PATH_KBUILD)/footer.kmk $(PATH_BIN)/VirtualBox.run: \ $(PATH_TARGET)/install/VirtualBox.tar.bz2 \ install.sh \ $(VBOX_VERSION_STAMP) \ routines.sh \ deffiles \ vboxnet.sh \ vboxdrv.sh \ $(if $(VBOX_OSE),,$(PATH_ROOT)/doc/License.txt) $(call MSG_TOOL,makeself,,,$@) $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" \ -e "s;_BUILD_;$(shell date);g" \ -e "s;_ARCH_;${BUILD_TARGET_ARCH};g" \ < install.sh > $(PATH_TARGET)/install/install.sh $(QUIET)chmod 0744 $(PATH_TARGET)/install/install.sh $(QUIET)$(INSTALL) -m 0755 routines.sh $(PATH_TARGET)/install $(QUIET)$(INSTALL) -m 0755 deffiles $(PATH_TARGET)/install $(QUIET)$(if $(VBOX_OSE),,$(INSTALL) -m 0644 $(PATH_ROOT)/doc/License.txt $(PATH_TARGET)/install/LICENSE) $(QUIET)$(INSTALL) -m 0755 vboxnet.sh $(PATH_TARGET)/install $(QUIET)$(INSTALL) -m 0755 vboxdrv.sh $(PATH_TARGET)/install $(QUIET)$(RM) -f $@ $(QUIET)$(VBOX_MAKESELF) --follow $(PATH_TARGET)/install $@ \ "VirtualBox for Linux installation" ./install.sh "\$$0 1> /dev/null" # .tar.bz2 for converting into .run $(PATH_TARGET)/install/VirtualBox.tar.bz2: \ $(addprefix $(PATH_TARGET)/archive/, $(LINUXARCHFILES)) \ Makefile.kmk \ $(VBOX_VERSION_STAMP) \ $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING) $(call MSG_L1,Packing $@) $(QUIET)$(MKDIR) -p $(@D) $(QUIET)tar --owner 0 --group 0 -cjRhf $@ -C $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING) $(LINUXARCHFILES) $(QUIET)chmod 0644 $@ # .tar.bz2 for distribution $(PATH_BIN)/VirtualBox.tar.bz2: \ $(addprefix $(PATH_TARGET)/archive/, $(LINUXARCHFILES)) \ Makefile.kmk \ $(VBOX_VERSION_STAMP) \ $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING) $(call MSG_L1,Packing $@) $(QUIET)$(MKDIR) -p $(PATH_TARGET) $(QUIET)tar --owner 0 --group 0 -cjRhf $@ -C $(PATH_TARGET) \ $(addprefix VirtualBox-$(VBOX_VERSION_STRING)/,$(LINUXARCHFILES)) $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING): $(PATH_TARGET)/archive $(call MSG_INST_SYM,$<,$@) $(QUIET)$(MKDIR) -p $(@D) $(QUIET)rm -rf $@ $(QUIET)$(LN_SYMLINK) $< $@ $(PATH_BIN)/VBoxAddIF.sh: VBoxAddIF.sh $(VBOX_VERSION_STAMP) $(call MSG_GENERATE,,$@,$<) $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" $< > $@ $(QUIET)chmod 0755 $@ $(PATH_BIN)/VirtualBox.desktop: VirtualBox.desktop $(VBOX_VERSION_STAMP) $(call MSG_GENERATE,,$@,$<) $(QUIET)$(SED) -e "s/\$$VBOX_VERSION_STRING/$(VBOX_VERSION_STRING)/" $< > $@ # Note: The -m feature of kmk_builtin_install does not work together with fakeroot! # Note: $(INSTALL) -s is currently not reliable when used in parallel builds. Fixed in 0.1.1. $(foreach f,$(LINUXSTRIPBIN),$(PATH_TARGET)/archive/$(f)): \ $(PATH_TARGET)/archive/% : $(PATH_BIN)/% | $(call DIRDEP,$(PATH_TARGET)/archive) $(call MSG_INST_FILE,$<,$@) $(QUIET)install -D -m 0755 $(if $(filter release profile,$(BUILD_TYPE)),-s,) $< $@ $(foreach f,$(LINUXSTRIPOBJ),$(PATH_TARGET)/archive/$(f)): \ $(PATH_TARGET)/archive/% : $(PATH_BIN)/% | $(call DIRDEP,$(PATH_TARGET)/archive) $(call MSG_INST_FILE,$<,$@) $(QUIET)objcopy --strip-unneeded -R .comment $< $@ $(foreach f,$(LINUXNOSTRIP),$(PATH_TARGET)/archive/$(f)): \ $(PATH_TARGET)/archive/% : $(PATH_BIN)/% | $(call DIRDEP,$(PATH_TARGET)/archive) $(call MSG_INST_SYM,$<,$@) $(QUIET)$(RM) -f $@ $(QUIET)$(MKDIR) -p $(@D) $(QUIET)$(LN_SYMLINK) $< $@ $(foreach d,archive install,$(PATH_TARGET)/$(d)/): $(QUIET)$(MKDIR) -p $@