Makefile.kmk revision e8deb95042455de8c2d224de59747541461cff7c
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# $Id$
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync## @file
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Makefile for the Linux installer.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync#
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync#
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Copyright (C) 2006-2007 innotek GmbH
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync#
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# available from http://www.virtualbox.org. This file is free software;
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# you can redistribute it and/or modify it under the terms of the GNU
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# General Public License (GPL) as published by the Free Software
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync#
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncDEPTH = ../../../..
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncinclude $(PATH_KBUILD)/header.kmk
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncifneq ($(BUILD_PLATFORM),linux)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync$(error "The Linux installer can only be built on Linux!") # yeah, right.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncendif
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncVBOX_NO_LINUX_RUN_INSTALLER ?= $(VBOX_OSE)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncPROGRAMS = VBoxTunctl
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncPACKING = $(if $(VBOX_NO_LINUX_RUN_INSTALLER),,$(PATH_BIN)/VirtualBox.run)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncPACKING += $(PATH_BIN)/VirtualBox.tar.bz2
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncOTHER_CLEAN = $(addprefix $(PATH_TARGET)/install/,\
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync install.sh deffiles routines.sh \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxAddIF.sh vboxdrv.sh vboxnet.sh \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VirtualBox.tar.bz2 LICENSE) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(wildcard $(PATH_TARGET)/VirtualBox-*)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncINSTALLS = linux-bin linux-doc
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncVBoxTunctl_TEMPLATE = VBOXR3EXE
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncVBoxTunctl_SOURCES = tunctl.c
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync#
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Linux installs.
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync#
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsynclinux-bin_INST = bin/
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsynclinux-bin_MODE = a+rx,u+w
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsynclinux-bin_SOURCES = \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxSysInfo.sh \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBox.sh=>VBox.sh
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsynclinux-doc_INST = bin/
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsynclinux-doc_MODE = a+r,u+w
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsynclinux-doc_SOURCES = \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_OSE),,$(PATH_ROOT)/doc/License.txt=>LICENSE) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBox.png=>VBox.png
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Strip these binaries
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncLINUXSTRIPBIN = \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDD.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDD2.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxManage \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxREM.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxRT.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxSettings.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxSVC \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDDU.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxVMM.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxXPCOM.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxXPCOMIPCD \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_WITH_QTGUI),VBoxKeyboard.so,) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_WITH_QTGUI),VirtualBox,) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync tstVMM \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxTunctl \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync components/VBoxC.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync components/VBoxSVCM.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync components/VBoxXPCOMIPCC.so
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Do not remove relocation information of these binaries
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncLINUXSTRIPOBJ = \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDD2GC.gc \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDD2R0.r0 \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDDGC.gc \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxDDR0.r0 \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VMMGC.gc \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VMMR0.r0
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncifeq ($(BUILD_TARGET_ARCH),amd64)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncLINUXSTRIPOBJ += \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxREM2.rel
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncendif
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Do not strip anything of these files
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncLINUXNOSTRIP = \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_OSE),,LICENSE) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_WITH_QTGUI),\
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_OSE),,License-$(VBOX_LICENSE_VER).html)) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync components/VBoxXPCOMBase.xpt \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync components/VirtualBox_XPCOM.xpt \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxSysInfo.sh \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBox.sh \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBox.png \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxAddIF.sh \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_WITH_QTGUI),VirtualBox.desktop,) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_WITH_QTGUI),$(foreach f,\
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(shell $(CAT_EXT) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.txt),\
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync nls/VirtualBox_$(f).qm nls/qt_$(f).qm),) \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync src \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync sdk
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Guest Additions
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncLINUXNOSTRIP += \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_OSE),,additions/VBoxGuestAdditions.iso)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Shared Folders
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsyncLINUXSTRIPBIN += \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync VBoxSharedFolders.so \
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync $(if $(VBOX_OSE),,VRDPAuth.so)
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync
14ea49401f3c8c61422aefbda43809e275f60c6cvboxsync# Shared Clipboard
LINUXSTRIPBIN += \
VBoxSharedClipboard.so \
$(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so,)
ifdef VBOX_WITH_DOCS
LINUXNOSTRIP += \
UserManual.pdf
LINUXSTRIPBIN += \
$(if $(VBOX_WITH_QTGUI),kchmviewer,)
ifneq ($(wildcard $(PATH_BIN)/VirtualBox.chm),)
# our 64-bit tinderboxes are not able to generate VirtualBox.chm so far
# but for building .deb/.rpm packages we use precompiled binaries.
LINUXNOSTRIP += \
VirtualBox.chm
endif
ifneq ($(wildcard $(PATH_BIN)/VirtualBoxAPI.chm),)
# same applies to VirtualBoxAPI.chm
LINUXNOSTRIP += \
VirtualBoxAPI.chm
endif
endif
ifdef VBOX_WITH_VRDP
LINUXSTRIPBIN += \
VBoxVRDP.so \
VBoxVRDP
LINUXNOSTRIP += \
rdesktop-vrdp.tar.gz
endif
ifdef VBOX_WITH_HEADLESS
LINUXSTRIPBIN += \
VBoxHeadless
endif
ifdef VBOX_WITH_WEBSERVICES
LINUXSTRIPBIN += \
vboxwebsrv \
webtest
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,,$@,$<)
ifdef VBOX_PATH_PACKAGE_DOCS
$(QUIET)$(SED) -e "s+\$$VBOX_DOC_PATH+$(VBOX_PATH_PACKAGE_DOCS)+" $< > $@
else
$(QUIET)$(SED) -e "s+\$$VBOX_DOC_PATH+/opt/VirtualBox-$(VBOX_VERSION_STRING)+" $< > $@
endif
# Note: The -m <mode> 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 $(VBOX_DO_STRIP),-s,) $< $@
$(foreach f,$(LINUXSTRIPOBJ),$(PATH_TARGET)/archive/$(f)): \
$(PATH_TARGET)/archive/% : $(PATH_BIN)/% | $(call DIRDEP,$(PATH_TARGET)/archive)
$(call MSG_INST_FILE,$<,$@)
$(QUIET)$(if $(VBOX_DO_STRIP),objcopy --strip-unneeded -R .comment $< $@,cp $< $@)
$(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 $@