rules revision c215a948010614887014a258c1751602d8bf7781
2548497d480c4f3e9b3fe14711bd510aa2157434gregames# Copyright (C) 2006-2010 Oracle Corporation
2548497d480c4f3e9b3fe14711bd510aa2157434gregames# This file is part of VirtualBox Open Source Edition (OSE), as
ccb5c3af2d491a7cd1c246cd23f0fb083da417fagregames# available from http://www.virtualbox.org. This file is free software;
0e58e92812f2f679d6bf2ff66cbcfa6c1d1e14bbjerenkrantz# you can redistribute it and/or modify it under the terms of the GNU
da6e93dca0222159650783802e23172e3160605egregames# General Public License as published by the Free Software Foundation,
da6e93dca0222159650783802e23172e3160605egregames# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
da6e93dca0222159650783802e23172e3160605egregames# distribution. VirtualBox OSE is distributed in the hope that it will
c927e13f298c42251296d33cc1fa3eb8232b843daaron# be useful, but WITHOUT ANY WARRANTY of any kind.
c927e13f298c42251296d33cc1fa3eb8232b843daaron#export DH_VERBOSE=1
9126ed10455a2a98a3a51c68ed1b356e1873e8e6aaron# possible overrides:
9126ed10455a2a98a3a51c68ed1b356e1873e8e6aaron# OSE=1 force VBOX_OSE
9126ed10455a2a98a3a51c68ed1b356e1873e8e6aaron# NOPARALLEL=1 compile with -j1
fa3ca21e09bac0dbc2045e9f53963ba46cfed5b1trawick# LINUX=<dir> compile vboxdrv against Linux found in <dir>
fa3ca21e09bac0dbc2045e9f53963ba46cfed5b1trawick# VERBOSE=1 verbose build
fa3ca21e09bac0dbc2045e9f53963ba46cfed5b1trawick# DEBUG=1 debug build
fa3ca21e09bac0dbc2045e9f53963ba46cfed5b1trawick# NOSUBVER=1 disable generation of the sub-version field (which is
18acb2c0df442ead1d075a1a2207cbb197725b14coar# either the subversion rev [if available] or the build date)
18acb2c0df442ead1d075a1a2207cbb197725b14coar# NODOCS=1 don't build docs, use precompiled UserManual.pdf and
18acb2c0df442ead1d075a1a2207cbb197725b14coar# NOMODS=1 don't build any module
617f972690d850a52cd4e9ef2f32d356e0fae715aaron# NOQT=1 don't build the Qt GUI
617f972690d850a52cd4e9ef2f32d356e0fae715aaron# HEADLESS=1 build the headless version
617f972690d850a52cd4e9ef2f32d356e0fae715aaron# NOWEBSVC=1 don't build the webservice API, default for OSE
617f972690d850a52cd4e9ef2f32d356e0fae715aaron# STAGEDISO=<path> don't build the VBoxAdditions, use the precompiled .iso
617f972690d850a52cd4e9ef2f32d356e0fae715aaron# BLEEDING_EDGE=xyz
526a776292f420ffeea0d081c61971ed381fad20stoddardose := $(if $(OSE),1,$(if $(wildcard $(vboxroot)/src/VBox/RDP/server),,1))
526a776292f420ffeea0d081c61971ed381fad20stoddardNOWINE := $(if $(NODOCS),$(if $(STAGEDISO),1,),)$(ose)
904d7bf799c6216beb34519463596b4fce630308wrowe ifeq ($(wildcard $(STAGEDISO)/VBoxGuestAdditions.iso),)
904d7bf799c6216beb34519463596b4fce630308wrowe $(error STAGEDISO='$(STAGEDISO)/VBoxGuestAdditions.iso' not found)
904d7bf799c6216beb34519463596b4fce630308wrowedebrel := $(if $(shell which lsb_release),_$(shell lsb_release -si)_$(shell lsb_release -sc),unknown)
904d7bf799c6216beb34519463596b4fce630308wrowe# shipping Linux kernel modules with bleeding-edge releases doesn't make sense
17a4c6968b2fa692ff4dde12fe305230ee6b0421aaroninstmod := $(if $(filter _Ubuntu_lucid _Debian_sid,$(debrel)),,1)
17a4c6968b2fa692ff4dde12fe305230ee6b0421aaron# Locations of custom built Qt libraries (see below)
01e77cadbd9ad4962993380245bcc033dde523e4rbb $(if $(ose),--ose,) $(if $(LINUX),--with-linux=$(LINUX),) \
01e77cadbd9ad4962993380245bcc033dde523e4rbb $(if $(filter _Debian_etch,$(debrel)),$(if $(ose),,--build-libcurl),) \
01e77cadbd9ad4962993380245bcc033dde523e4rbb $(if $(filter _Debian_etch _Ubuntu_hardy,$(debrel)),--with-qt4-dir=$(qtstdc6)) \
c453a141db60a5b19649eac508f4851a8729c556rbb $(if $(VERBOSE),--print-directory KBUILD_VERBOSE=2,--no-print-directory) \
8b91dcac0e1ef7796c72d16b0962267313cac486jerenkrantz $(if $(BLEEDING_EDGE),VBOX_BLEEDING_EDGE=$(BLEEDING_EDGE),) \
8b91dcac0e1ef7796c72d16b0962267313cac486jerenkrantz $(if $(filter _Debian_etch _Ubuntu_hardy,$(debrel)),,VBOX_WITH_SYSFS_BY_DEFAULT=1)
6ce942b017db75b559a42bdc2d7b8ea9e869a956wrowe cd $(vboxroot) && ./configure --odir=$(current)/debian $(cfg_flags)
7dfed2b71c9c4223996cbd7c5c0c85c7c8fef2a4rbb . debian/env.sh && kmk -C $(vboxroot) $(bld_flags) $(if $(NOPARALLEL),-j1,) all
6ce942b017db75b559a42bdc2d7b8ea9e869a956wrowe $(if $(NODOCS),cp $(vboxroot)/prebuild/UserManual*.pdf $(builddir)/bin,)
7dfed2b71c9c4223996cbd7c5c0c85c7c8fef2a4rbb $(if $(NODOCS),cp $(vboxroot)/prebuild/VirtualBox*.chm $(builddir)/bin,)
574f6ff9ee80ef4f772649c5c8319b764a8abe42jerenkrantz $(if $(STAGEDISO),cp $(STAGEDISO)/VBoxGuestAdditions.iso $(builddir)/bin/additions,)
574f6ff9ee80ef4f772649c5c8319b764a8abe42jerenkrantz . debian/env.sh && kmk -C $(vboxroot) $(bld_flags) \
6d7d70dbda8e461d87f2d41e323755496ae3ebc7trawick VBOX_LNX_ADD_ARCHIVE.x86=$(builddir)/bin/additions/VBoxGuestAdditions-x86-r$(svnrev).tar.bz2 \
6d7d70dbda8e461d87f2d41e323755496ae3ebc7trawick VBOX_LNX_ADD_ARCHIVE.amd64=$(builddir)/bin/additions/VBoxGuestAdditions-amd64-r$(svnrev).tar.bz2 \
22a25f3393393b781e214f4abef17950bcb8bbe3jerenkrantz VBOX_PATH_ADDITIONS.linux.x86=$(builddir)/bin/additions \
22a25f3393393b781e214f4abef17950bcb8bbe3jerenkrantz VBOX_PATH_ADDITIONS.linux.amd64=$(builddir)/bin/additions \
a310497ca9c5112d759871e1b7d9f6a40fb78bcfwrowe# Build modules for every kernel we find in /lib/modules/*
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb make -C $(builddir)/bin/src/vboxdrv KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb make -j4 -C $(builddir)/bin/src/vboxdrv KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb $(builddir)/bin/src/vboxdrv/vboxdrv.ko $(moddir)/$$(basename $$d)/vboxdrv.ko); \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb make -C $(builddir)/bin/src/vboxnetflt KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb (cp $(builddir)/bin/src/vboxdrv/Module.symvers $(builddir)/bin/src/vboxnetflt || true) && \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb make -j4 -C $(builddir)/bin/src/vboxnetflt KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb $(builddir)/bin/src/vboxnetflt/vboxnetflt.ko $(moddir)/$$(basename $$d)/vboxnetflt.ko); \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb make -C $(builddir)/bin/src/vboxnetadp KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
e36ef0d081aa59867688bcbb3da65952ec16fae3rbb (cp $(builddir)/bin/src/vboxdrv/Module.symvers $(builddir)/bin/src/vboxnetadp || true) && \
52df98b165194a0ad68885f49f81fdaf56ece568wrowe make -j4 -C $(builddir)/bin/src/vboxnetadp KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
52df98b165194a0ad68885f49f81fdaf56ece568wrowe $(builddir)/bin/src/vboxnetadp/vboxnetadp.ko $(moddir)/$$(basename $$d)/vboxnetadp.ko); \
44a4ee1140769173da7bc2b42d1a686e3260ad84wrowe rm -f debian/$(package).init debian/vboxdrv.init debian/vboxweb-service.init
44a4ee1140769173da7bc2b42d1a686e3260ad84wrowe rm -f debian/AutoConfig.kmk debian/configure.log debian/env.sh
e379fc6d7f79163700290d92ce75deb4f3005301jerenkrantz rm -f debian/modules-stamp debian/build-stamp debian/configure-stamp
e379fc6d7f79163700290d92ce75deb4f3005301jerenkrantz rm -f debian/virtualbox-*.substvars debian/virtualbox*.debhelper
976501adbc040220270f7d1d77c4b8373033be69wrowe# Build architecture-dependent files here.
976501adbc040220270f7d1d77c4b8373033be69wrowebinary binary-arch binary-indep: build $(if $(NOMODS),,modules)
8a3a703eae0e35f674b189181609545c6fc77a09rbb tar -xjC $(prefix)/opt -f $(builddir)/bin/VirtualBox.tar.bz2
889d9c84f8b1ad850f977a6d8e548696994f8f86jerenkrantz install -d -g 0 -o 0 $(prefix)/usr/share/icons/hicolor/$$i/mimetypes; \
889d9c84f8b1ad850f977a6d8e548696994f8f86jerenkrantz mv $$i/* $(prefix)/usr/share/icons/hicolor/$$i/mimetypes; \
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz install -d -g 0 -o 0 $(prefix)/usr/lib/$(package)/ExtensionPacks
8e5842bc05146bb5c171e53b00b24063d17c666cjerenkrantz mv $(archdir)/virtualbox.xml debian/$(verpkg).sharedmimeinfo
8e5842bc05146bb5c171e53b00b24063d17c666cjerenkrantz install -d -g 0 -o 0 $(prefix)/usr/share/lintian/overrides
cdb15137887e284797e9510029098dc725b4dacfjerenkrantz -e 's|%VERPKG%|$(verpkg)|g' \
798c7c11dc2fe3b08e591e9c76fc1a84857f2cd4jerenkrantz mv $(archdir)/VBoxEFI32.fd $(prefix)/usr/lib/$(package)
798c7c11dc2fe3b08e591e9c76fc1a84857f2cd4jerenkrantz mv $(archdir)/VBoxEFI64.fd $(prefix)/usr/lib/$(package)
abaaa634d7cee882b7c4bf078ded749ebf11997erbb mv $(archdir)/*.rel $(prefix)/usr/lib/$(package) || true
0aa8e8fd5a242948518655f2296b3c76386754e5jerenkrantz mv $(archdir)/VBoxNetDHCP $(prefix)/usr/lib/$(package)
0aa8e8fd5a242948518655f2296b3c76386754e5jerenkrantz mv $(archdir)/VBoxNetAdpCtl $(prefix)/usr/lib/$(package)
0aa8e8fd5a242948518655f2296b3c76386754e5jerenkrantz mv $(archdir)/VBoxXPCOMIPCD $(prefix)/usr/lib/$(package)
de3abad1fe263e577bb11e99b358836bd901397crbb mv $(archdir)/components $(prefix)/usr/lib/$(package)/components
de3abad1fe263e577bb11e99b358836bd901397crbb mv $(archdir)/*.so.4 $(prefix)/usr/lib/$(package) || true
de3abad1fe263e577bb11e99b358836bd901397crbb $(if $(NOQT),,mv $(archdir)/VBoxTestOGL $(prefix)/usr/lib/$(package))
de3abad1fe263e577bb11e99b358836bd901397crbb $(if $(NOQT),,mv $(archdir)/nls $(prefix)/usr/share/$(package))
0a549489abdb309ef25483431e1e5610ed4ba7a8gstein mv $(archdir)/vboxshell.py $(prefix)/usr/lib/$(package)
0a549489abdb309ef25483431e1e5610ed4ba7a8gstein install -D -g 0 -o 0 -m 644 debian/VBox.sh $(prefix)/usr/bin/VBox
0a549489abdb309ef25483431e1e5610ed4ba7a8gstein mv $(archdir)/VBoxSysInfo.sh $(prefix)/usr/share/$(package)
14c6f2e13d97a4fafac1fbc247a274a298d5b418wrowe mv $(archdir)/VBoxCreateUSBNode.sh $(prefix)/usr/share/$(package)
14c6f2e13d97a4fafac1fbc247a274a298d5b418wrowe for i in VBoxManage VBoxSVC $(if $(HEADLESS),,VBoxSDL) \
f00d1e76bae896c2f6a520eec69b1d0d802d4108jerenkrantz mv $(archdir)/$$i $(prefix)/usr/lib/$(package); done
58097d7d8d1a394092374b9f6ddf76b7993724a4rbb if [ -f $$d/vboxdrv.ko -a -f $$d/vboxnetflt.ko -a -f $$d/vboxnetadp.ko ]; then \
58097d7d8d1a394092374b9f6ddf76b7993724a4rbb install -D -g 0 -o 0 -m 0644 \
58097d7d8d1a394092374b9f6ddf76b7993724a4rbb $$d/vboxdrv.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxdrv.ko; \
2f6cebd6b8bf0b044f6579d23117a4a3c364a554wrowe install -D -g 0 -o 0 -m 0644 \
2f6cebd6b8bf0b044f6579d23117a4a3c364a554wrowe $$d/vboxnetflt.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxnetflt.ko; \
2f6cebd6b8bf0b044f6579d23117a4a3c364a554wrowe install -D -g 0 -o 0 -m 0644 \
2f6cebd6b8bf0b044f6579d23117a4a3c364a554wrowe $$d/vboxnetadp.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxnetadp.ko; \
070d2f9fd52a3f0e45ca7ae1235c5a5755b80d24rbb $(if $(NOQT),,mv $(archdir)/kchmviewer $(prefix)/usr/lib/$(package))
7c19ce86bbd72bba1d018522250f5f315ffbc0afjerenkrantz $(addprefix $(archdir)/, $(if $(HEADLESS),,License-*.html) LICENSE)
7c19ce86bbd72bba1d018522250f5f315ffbc0afjerenkrantz rm $(addprefix $(archdir)/,UserManual*.pdf VirtualBox*.chm \
2264fbcbab4c796c4222c30393c0b218c98b6befrbb for i in rdesktop-vrdp.tar.gz additions/VBoxGuestAdditions.iso; do \
2264fbcbab4c796c4222c30393c0b218c98b6befrbb $(if $(HEADLESS),,mv $(archdir)/rdesktop-vrdp $(prefix)/usr/bin)
2264fbcbab4c796c4222c30393c0b218c98b6befrbb $(if $(HEADLESS),,mv $(archdir)/rdesktop-vrdp-keymaps $(prefix)/usr/share/$(package))
e099672a13ea4ff4a11f130406f1baecba5949bajerenkrantz if [ -d $(archdir)/accessible ]; then mv $(archdir)/accessible $(prefix)/usr/lib/virtualbox; fi
9b29e0cfeb2c89a047806cc4a2a764afed6bb170wrowe mv $(archdir)/$$i $(prefix)/usr/share/$(package); done
d6a93816bfaa5b3de5f2e6cb0d172cbe20dd056ejerenkrantz $(if $(NOQT),,usr/bin/VBox usr/bin/VirtualBox) \
117e2968318323d2ad2187fcd4de379d2eca245cwrowe usr/share/virtualbox/src/vboxhost usr/src/vboxhost-$(ver)
117e2968318323d2ad2187fcd4de379d2eca245cwrowe -e 's|%NOLSB%||g' \
117e2968318323d2ad2187fcd4de379d2eca245cwrowe -e 's|%DEBIAN%|yes|g' \
117e2968318323d2ad2187fcd4de379d2eca245cwrowe -e 's|%PACKAGE%|virtualbox|g' \
117e2968318323d2ad2187fcd4de379d2eca245cwrowe $(vboxroot)/src/VBox/Installer/linux/vboxdrv.sh.in > debian/vboxdrv.init
e9fa5a00f39f6aabbc5dcd776c5bc6bd0638f955wrowe -e 's|%NOLSB%||g' \
e9fa5a00f39f6aabbc5dcd776c5bc6bd0638f955wrowe -e 's|%DEBIAN%|yes|g' \
e9fa5a00f39f6aabbc5dcd776c5bc6bd0638f955wrowe -e 's|%PACKAGE%|virtualbox|g' \
e9fa5a00f39f6aabbc5dcd776c5bc6bd0638f955wrowe $(vboxroot)/src/VBox/Installer/linux/vboxweb-service.sh.in > debian/vboxweb-service.init
e9fa5a00f39f6aabbc5dcd776c5bc6bd0638f955wrowe cat debian/preinst.in | sed -e 's|%VER%|$(ver)|g' > debian/preinst
de419544885a5c64589dddf1b8517672ee17c1feminfrin cat debian/prerm.in | sed -e 's|%VER%|$(ver)|g' > debian/prerm
de419544885a5c64589dddf1b8517672ee17c1feminfrin cat debian/postinst.in | sed -e 's|%VER%|$(ver)|g' > debian/postinst
9c4321d9cc4eecbb0c5d568aea53d5e6812c7b96martin dh_strip --keep-debug --exclude=libQtCoreVBox.so.4 --exclude=libQtGuiVBox.so.4 --exclude=libQtNetworkVBox.so.4 --exclude=libQtOpenGLVBox.so.4 --exclude=libqtaccessiblewidgets.so
9c4321d9cc4eecbb0c5d568aea53d5e6812c7b96martin # manually strip our R0/GC modules, dh_strip cannot handle them
956c6100798467199833e7159a00506ee879d772minfrin $(prefix)/usr/lib/$(package)/*.r0 $(prefix)/usr/lib/$(package)/*.gc; do \
956c6100798467199833e7159a00506ee879d772minfrin $(prefix)/usr/lib/debug/usr/lib/$(package)/`basename $$f`; \
47697533fd7ced2259f9150677ea5efa583b6c13rbb objcopy --add-gnu-debuglink=$(prefix)/usr/lib/debug/usr/lib/$(package)/`basename $$f` $$f; \
7ba1a2c8babfd7c7c46bb03567a868d51e1023dbwrowe mv $(current)/debian/$(verpkg)/usr/lib/debug $(current)/debian/$(verpkg)-dbg/usr/lib
b2c2c8a4bc977c0a6bb937af995efc56dc3879a3wrowe -Vdkms=$(if $(filter _Debian_etch _Debian_lenny,$(debrel)),,dkms)